njthnet

谈谈大型J2EE系统架构

为了应对大型J2EE系统中 可靠性、可伸缩性、可用性的要求,我们会采用集群技术、分布式技术、存储环境 来满足大型系统的运行要求。 集群技术是由多台服务器采用松散组合方式的构成,比如:Google、LinkedIn、Digg。虽然这些系统中使用到集群的技术,有很多台计算机构建了系统的N层架构,但是对于用户来说透明的,用户并不知道有多少台服务器给他们提供服务,用户也不知道是哪台服务器为他们的请求作出服务。 尽管在用户高并发访问量的状态下系统出现故障的现象是很低的,因为系统中的每个环节都做了压力分载和失效转发。 在大型J2EE项目中,比如:有100个用户同时发出访问请求,经过负载均衡策略后,10台机器上只应对10个用户的请求。再比如说有100个人去到火车站买票,只有一个售票窗口工作效率会很低,如果开10个售票窗口,再通过火车站售票大厅的广播告诉每个进来买票的人,有10个窗口可以提供服务,那么工作效率会明显上升,这就是集群技术特点之一—压力分载。 在复杂的系统中环境中,上百台机器不可能每小时 每台机器都在正常运行,出现不可预先的故障是难免的,但是对于出现故障后,能否还能保证系统的正常运行,特别是运行关键性任务的机器,绝对不能出现系统瘫痪的状态,所以需要系统中可以做到失效转发。 比如:用户发出了请求,服务器端已经应答,并且准备回送请求结果,此时硬件出现了故障,不影响用户的业务操作,只是多了一个小插曲,用户需要再请求一次,业务流程将继续进行下去。因为本来失效down机 机器上的用户请求信息在另外一台机器上也同样存在,这就是集群技术特点之一—失效转发。 所谓存储环境,不仅仅是我们经常使用到的数据库系统,还有文件系统和缓存。系统中的数据有可能是文字信息,还有可能是图片和文件。 文字信息我们建议保存在数据中,对于图片和文件数据,我们不建议保存在数据库中,因为将二进制文件保存在数据库中对数据库系统的开销是非常大的。因为在数据库系统中读取文件,是将二进制数据读取在内存中再展示给用户。跟保存在数据库 blob字段  比较 还是直接通过文件系统存放在磁盘上比较好, 因为给系统带来的压力比较小。 大型J2EE项目中,缓存的作用主要是降低系统每个环节上的运行压力,提供运行效率。对于大型系统中我们建议您使用类似 Memcached 的可集中、可集群 的缓存系统,因为在大型系统中缓存同步是非常头痛的事情。另外还需要注意缓存的使用,在整个系统中缓存无处不在,自己写的、网络设备上的,CPU上的,硬盘上、应用服务器上,等等,妥善的使用好缓存是一个比较深入的话题,所以尽量将缓存集中管理。 参考文献: http://www.theserverside.com/tt/articles/article.tss?l=J2EEClustering http://www.javaworld.com/jw-02-2001/jw-0223-extremescale.html http://java.sun.com/developer/technicalArticles/J2EE/applications   –end–

posted on 2010-03-01 18:38 njthnet 阅读(250) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

留言簿

文章档案

新闻档案

搜索

最新评论