论坛首页 Java企业应用论坛

真正高伸缩性和高可用性的秘密?

浏览 18491 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-07-11  
potian 写道
其中一个重要的解决方法是开辟一块共享内存区域,每一个用户会占据一个条目,可以为应用程序的所有部分直接存取,并且一直常驻在这个共享内存区域内,这个区域对我们定制Web应用服务器动态展现页面有很多好处。

呵呵,我们就是这样做的。把用户信息放在一个公共的共享内存区内。单点登录我完全没有参考现在流行的一些做法,就是很简单的在多台服务器间建立一个双向认证身份的 SSL Socket,在某一台服务器上登录后自动向其它服务器广播一条消息,告诉其它服务器建立相关的用户信息。这样用户访问其它服务器上的资源就不需要登录了。在任何一台服务器上注销也执行一遍类似的操作。
potian 写道
当查询(譬如全文查询)的时候,总的服务器知道这个具体的路由算法,象不同的服务器要求数据,最后合并返回

除了性能以外,HA 的一个最重要的考虑因素是尽最大努力避免单点故障。这个总的服务器至少应该是双机吧?

去看看那篇文章。
0 请登录后投票
   发表时间:2004-07-12  
共鸣~~

potian 写道

1 舍弃EJB
2 舍弃集群
5 无状态

目前的CMP确实鸡肋,BMP就不说了,有状态的SessionBean,因为容器的原因,让人感觉过于复杂难以把握,况且在业务分割的前提下,前端的状态机制不仅已经够用,而且性能更好。仅有的无状态SessionBean与RMI相比几乎没有优势,后者虽也麻烦,但编程上的限制至少要少一点。

potian 写道

3 不同行业数据库划分到相对基本独立的不同服务器群(而不是依赖服务器之间密切关联的集群)
4 不同页面采用不用服务器群
6 对Resin的内部页面展示机制进行专门化的定制(只能为我这个程序所用)

对于业务合理分割,横切和纵切分别采取不同优化方案,简单而有效。

potian 写道

7 在数据的不同获取和生成阶段大量采用缓存技术

缓存,永远是优化性能的不二法宝。

从来就只有适合而没有完美的设计,此拓扑的关键在于“中心路由服务”,对其性能和可靠性的要求会非常苛刻,除了硬件保障之外,软件上更要“吝啬”。

项目中,需防止各种各样的“膨胀”。

good luck.
0 请登录后投票
   发表时间:2004-07-13  
potian先生这个做法,实际和科学计算的分布模式是一样的,就是把定义域切片,每个切片交由专门的机器处理

ejb那种分布模式,是在定义域无法再切片的时候,进行分布,才出现了依赖服务器之间密切关联的集群
0 请登录后投票
   发表时间:2004-07-14  
potian 写道
至于我这个项目里面,还是存在着服务端状态的(我说错,应该是尽量少用状态),Session也是有的,但仅在少数页面的时候需要。尽量采用cookie.在使用Session时尽量不在内部存放其它状态信息。其中一个重要的解决方法是开辟一块共享内存区域,每一个用户会占据一个条目,可以为应用程序的所有部分直接存取,并且一直常驻在这个共享内存区域内,这个区域对我们定制Web应用服务器动态展现页面有很多好处。

使用应用服务器集群要求Session的复制,实际上开销(譬如通过可靠的组通讯)还是很大的,所以Session不能过大,属性的改变必须重新设置整个Session,Session必须可串行化等等问题,并且我们采用的方法是通过不同的行业划分,譬如某一个服务器群负责一个大行业,其中不同的服务器负责分行业,当查询(譬如全文查询)的时候,总的服务器知道这个具体的路由算法,象不同的服务器要求数据,最后合并返回(这里有某些ActiveObject的做法),在这样的情况,我们基本上就不需要集群,而且随着规模和访问量的扩大我们可以比较好地进行伸缩。另外就是通过DNS和相关的网络设备来解决单点失败的问题。

这些都是需要写程序,而写这些程序的难度,在我看来并不比写ejb简单。
正如上面几位指出的,可以按行业划分是关键点。
0 请登录后投票
   发表时间:2004-07-16  
服务器群如何分享单独的用户数据呢,是用访问本地文件系统序列化类吗?
0 请登录后投票
   发表时间:2007-02-02  
3 不同行业数据库划分到相对基本独立的不同服务器群(而不是依赖服务器之间密切关联的集群)
严重赞同这一点,极端情况下,可以某一个表或几个关系密切的表以及其上的对象模型在一个单独的服务器上,通过请求路径分派到相应服务器。所有针对该表的操作只能通过这些对象进行。
0 请登录后投票
   发表时间:2007-07-25  
难道搂主连负载均衡也不用吗?如果访问者有不均衡,后果会荡机的
0 请登录后投票
   发表时间:2007-07-25  
davexin 写道
难道搂主连负载均衡也不用吗?如果访问者有不均衡,后果会荡机的
无状态的话用apache均衡就可以了。
0 请登录后投票
论坛首页 Java企业应用版

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