锁定老帖子 主题:开源Java Web架构 有源码
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-17
最后修改:2011-04-01
继续把之前的帖子重发一下。 说明: 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,增加身份认证服务。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-17
呵呵
求教楼主: (1)、Web服务器Session缓存是出于什么考虑需要缓存?不做这个Session缓存会有什么后果? (2)、应用缓存同理? 多谢! |
|
返回顶楼 | |
发表时间: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秒之后将失效 |
|
返回顶楼 | |
发表时间:2009-12-17
明白了 多谢楼主。。。
|
|
返回顶楼 | |
发表时间:2009-12-17
我还有一个问题请教:
你的应用服务器选择Jboss、glassfish、tomcat 之类的,还有没有其他的更轻量级的选择。因为我觉得Servlet/JSP的支持已经交给了你的Web服务器来处理,二后台的应用服务器无非是暴露一系列服务出来,一般也很少会使用Ejb之类的J2EEAPI,所有应用服务器也不需要J2EEAPI的支持,所有我想还有没有其他更轻量级更高性能的选择。不知我的理解对不对~~~~~~~、?? |
|
返回顶楼 | |
发表时间:2009-12-18
LZ看看收件箱
|
|
返回顶楼 | |
发表时间:2009-12-18
JaNer 写道 我还有一个问题请教:
你的应用服务器选择Jboss、glassfish、tomcat 之类的,还有没有其他的更轻量级的选择。因为我觉得Servlet/JSP的支持已经交给了你的Web服务器来处理,二后台的应用服务器无非是暴露一系列服务出来,一般也很少会使用Ejb之类的J2EEAPI,所有应用服务器也不需要J2EEAPI的支持,所有我想还有没有其他更轻量级更高性能的选择。不知我的理解对不对~~~~~~~、?? 我没有强制使用任何web容器,只要支持Servlet/JSP的容器都可以的。 |
|
返回顶楼 | |
发表时间:2009-12-18
有经过实际的项目应用吗?最高能够承受的压力是多少?性能瓶颈在哪?数据库集成是否有解决方案?增加负载数量能够提高多少性能?为什么用Nginx?它的性能极限是多少?这些楼主都是否清楚?如果没有,那么请楼主做过这些再发布吧,花架子只能用来看,不能拿来用的。
|
|
返回顶楼 | |
发表时间:2009-12-18
LZ,session过期, memcached中的相关的session的值是如何处理的?
|
|
返回顶楼 | |
发表时间: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粘连? |
|
返回顶楼 | |