 |
|
4. 在集群环境中,我应该使用数据库持久化的方式还是使用内存到内存复制的方式来进行会话故障转移?
答:
数据库持久化和内存到内存复制之间的性能差异并不大。这是因为 95% 的复制或持久化会话开销是在会话对象的序列化/反序列化中产生的——不论会话保存在哪里,这种开销都必定会产生。
决定选择哪种技术将部分基于这两种技术之间的差异:
- 通过使用数据库,您实际上持久化了数据(保存到磁盘中),这样高可用性的数据库服务器就可以在级联故障中幸免于难,而内存复制的方式无法达到此目的。
- 对于两个相同的单元/域,高可用性的数据库完全可以确保两个域之间的会话故障转移,而对于内存到内存复制,两个单元只能有一个通用复制器;因此,它就变为单点故障(Single Point Of Failure,SPOF)。
因此,对于必须进行交叉单元会话故障转移的配置,只能选择高可用性数据库来消除 SPOF。请注意,此时跨单元共享会话是得到支持的,但不建议这样做,因为在单元间共享状态将使得在两个单元中独立升级组件(应用程序和 WAS)异常困难。
另外,利用内存到内存复制,您可以存储的会话信息的数量受应用服务器的 JVM 堆大小的限制。即使在 WebSphere Application Server V6.01 中支持 64 位的 JVM,最大应用服务器堆大小也大大小于数据库服务器(用作会话存储)上可用的磁盘空间数量。因此,尽管在许多组织中,使用内存到内存复制对避免系统管理员和数据库管理员之间的角色和职责冲突更有利,但数据库持久化仍是最佳选择。
有关会话、状态复制的更多资源,请参阅 developerWorks 中国站点的文章《Java 理论与实践:Web 层的状态复制》。
返回“WebSphere Application Server 常见问题及解答”专栏。
|
|
 |
|
 |