论坛首页 Java企业应用论坛

开源Java Web架构 有源码

浏览 30695 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-12-17   最后修改:2011-04-01
前两天发了一个招聘广告贴,结果之前的ID和帖子都被管理员删了,之前的一些资料都没了,真是服了,没办法又注册了一个原来的ID,结果等了两天才能发贴。
继续把之前的帖子重发一下。



说明:
Web负载均衡和应用负载均衡使用Nginx
Web服务器用Tomcat
应用服务器可选Jboss、glassfish、tomcat
数据库Mysql
Session缓存使用TokyoTyrant(需要持久化)
应用缓存使用Memcached
Web服务器通过Hessian远程调用访问应用服务器
Web层使用Spring3 MVC通过Hessian调用远程应用服务器的业务方法获取业务数据生成页面。各服务器之间的session存储在session缓存中。
应用层使用Spring3+Hibernate+Hessian,主要是提供业务service接口,在接口层进行事务控制,通过hessian生成远程调用接口供web层调用。通过AOP实现结果缓存减少数据库压力。
数据库做集群,这部分没有画在图上。

------------------------------------------------------------------------------------------
2010-09-21增加:
这个是新版本的软件结构:

改进:购物车数据保存在共享的memcached中,去掉session,增加身份认证服务。
  • 大小: 45.5 KB
  • 大小: 72.2 KB
   发表时间:2009-12-17  
呵呵
求教楼主:
(1)、Web服务器Session缓存是出于什么考虑需要缓存?不做这个Session缓存会有什么后果?
(2)、应用缓存同理?
多谢!
0 请登录后投票
   发表时间:2009-12-17   最后修改:2009-12-17
JaNer 写道
呵呵
求教楼主:
(1)、Web服务器Session缓存是出于什么考虑需要缓存?不做这个Session缓存会有什么后果?
(2)、应用缓存同理?
多谢!

这两个缓存都不是必须的,没有强制使用。
Session缓存只是为了实现高可用,一台web服务器当了之后可以很方便还原之前的session信息到新的web服务器。这个功能最好结合Nginx的ip_hash一起使用,具体原因就不说了。
我的想法是每两个web一组,共享Session,保证高可用,因为购物车信息存在session中,一旦web服务器当机购物车数据会丢失。现在我想把这块重新设计一下,系统不使用session,以后这部分就不存在了。
至于应用缓存只是为了提高系统性能,没有对系统功能没有任何影响。使用方法如下:
    @MethodCache(expire = 120)
    public String testMethod() {
        System.out.println("testMethod run");
        return new Date().toString();
    }

在方法上加注解,expire = 120 表示缓存时间,120秒之后将失效
0 请登录后投票
   发表时间:2009-12-17  
明白了 多谢楼主。。。
0 请登录后投票
   发表时间:2009-12-17  
我还有一个问题请教:
你的应用服务器选择Jboss、glassfish、tomcat 之类的,还有没有其他的更轻量级的选择。因为我觉得Servlet/JSP的支持已经交给了你的Web服务器来处理,二后台的应用服务器无非是暴露一系列服务出来,一般也很少会使用Ejb之类的J2EEAPI,所有应用服务器也不需要J2EEAPI的支持,所有我想还有没有其他更轻量级更高性能的选择。不知我的理解对不对~~~~~~~、??
0 请登录后投票
   发表时间:2009-12-18  
LZ看看收件箱
0 请登录后投票
   发表时间:2009-12-18  
JaNer 写道
我还有一个问题请教:
你的应用服务器选择Jboss、glassfish、tomcat 之类的,还有没有其他的更轻量级的选择。因为我觉得Servlet/JSP的支持已经交给了你的Web服务器来处理,二后台的应用服务器无非是暴露一系列服务出来,一般也很少会使用Ejb之类的J2EEAPI,所有应用服务器也不需要J2EEAPI的支持,所有我想还有没有其他更轻量级更高性能的选择。不知我的理解对不对~~~~~~~、??

我没有强制使用任何web容器,只要支持Servlet/JSP的容器都可以的。
0 请登录后投票
   发表时间:2009-12-18  
有经过实际的项目应用吗?最高能够承受的压力是多少?性能瓶颈在哪?数据库集成是否有解决方案?增加负载数量能够提高多少性能?为什么用Nginx?它的性能极限是多少?这些楼主都是否清楚?如果没有,那么请楼主做过这些再发布吧,花架子只能用来看,不能拿来用的。
0 请登录后投票
   发表时间:2009-12-18  
LZ,session过期, memcached中的相关的session的值是如何处理的?
0 请登录后投票
   发表时间:2009-12-18  
yanwt 写道
JaNer 写道
我还有一个问题请教:
你的应用服务器选择Jboss、glassfish、tomcat 之类的,还有没有其他的更轻量级的选择。因为我觉得Servlet/JSP的支持已经交给了你的Web服务器来处理,二后台的应用服务器无非是暴露一系列服务出来,一般也很少会使用Ejb之类的J2EEAPI,所有应用服务器也不需要J2EEAPI的支持,所有我想还有没有其他更轻量级更高性能的选择。不知我的理解对不对~~~~~~~、??

我没有强制使用任何web容器,只要支持Servlet/JSP的容器都可以的。


如此看来应用服务器可以直接使用Main方法
public static void main(String[] args) {
                boolean flag=true;//
                // Init Spring ApplicationContext ....
                while(flag){
                        try {
                                Thread.sleep(Long.MAX_VALUE);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                }
        }
,不知想法是否可行.

有个小疑问:使用session缓存开销是否划算,可以考虑IP粘连?
   
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics