文章推荐:和BEA架构师Dean Jacobs谈Cluster
文章:
http://www.theserverside.com/events/videos/DeanJacobs/transcription.html
从这个对话中,我们大概可以了解如何考虑Cluster,要从Web层 EJB层 JMS等几个方面分别去考虑,首先着重的是state,即状态的cluster,关于状态有三种:
1. Stateless services,它只要解决负载平衡问题,也就是说,增加多台机器就能增强Stateless service的处理能力;
2.需要在内存中保留,但是不一定要持久化到数据库或文件系统,这就是Web层的http session和stateful session bean,一般做内存备份,丢失第一份,可以从第二份找到。
3.需要持久化的一些class,如entity beans, JMS destinations,这些可以使用后台强大的数据库和cache来解决。
Dean Jacobs特别谈到了singleton service的cluster问题:singleton service属于上面第三类,通过好的cache方案或entity bean来解决。
Dean Jacobs还提出以一种垂直式的cluster来使系统分层,通过在最前端预置一批大量cheap的Pc机,用来保存Socket相关的Session,这样,然后再通过Socket Server集中访问后台的几个大型服务器,这样的分层虽然比不分离session时性能有所降低,但是更scalable,这样就省略对Http session 复制和跳跃式的操作,后者随着服务器台数增加会非常耗时。
Dean Jacobs认为WEB层的分离独立以及后端的分布式对象(EJB)给于了EJB强大的力量。