原文地址http://www.theserverside.com/articles/article.tss?l=J2EEClustering .
此文章写的非常通俗易懂,用词简单,建议阅读一下,就是有点长.
相关术语
Scalability
可度量
High Availability
高可用性
Load balancing
负载均衡
Fault Tolerance
错误冗余
Failover
崩溃挽回?
Idempotent methods
等幂函数? 意思就是函数本身也是从集群中获取一个节点来执行的函数...(咳,这么别扭)
HTTPSession 集群实现
- Database persistence approach 数据库保存
- Memory replication approach 内存保存
- Tomcat’s approach :Multi-servers replication 多服务器复制:互相复制
- Weblogic, Jboss and WebSphere’s approach-- paired servers replication 结对复制
- IBM’s Approach -- centralized state server 中心服务器
- Sun’s approach – special Database 特殊数据库复制(内存)
JNDI 集群实现
- Shared global JNDI Tree 共享JNDI树
- Independent JNDI 独立的JNDI
- Centralized JNDI 中心服务器JNDI
有些Application支持多个地址用逗号分割
EJB集群实现
(略过...)
JMS和数据库连接的集群支持
很多不支持...
Myths about J2EE clustering J2EE集群神话
- Failover can avoid errors completely. -- Negative FailOver能完全避免错误 --并非如此
执行到一半发生错误是很难避免的,除非调用的是"Idempotent methods"
不过我觉得可以不考虑这个问题?
- Stand-alone applications can be transmit transparently to a cluster structure. -- Negative! 单机程序能够透明地发布到集群构架上 --并非如此
- Http Session 限制
保存在session里面的数据必须支持序列化
避免保存大的对象
内存复制集群的必须防止交叉引用
setAttribute方法的调用
- Cache
很多时候缓存不起效果
- Static variables
类似单态的使用会造成问题,如果没有考虑集群的话
- External resource
外部资源例如上传文件如果保存在某个服务器的磁盘上会有问题.这时候要保存在数据库里或者使用磁盘阵列等解决方式.
- Special Services
例如定时的服务,会造成每台服务器都去调用的可能,所以要考虑.
- Distributed structure is more flexible than collocated one? -- Maybe Not! 分布式结构比集中配置灵活 --可能不是
分析了Web容器和EJB容器的关系.
Conclusion 结论
集群并不是那么简单,从项目的开始就要考虑相关问题.