通常,我都会遇到各种各样的客户询问我大量关于 HTTP 会话持久性的问题。随着 Web 2.0 技术的推广,越来越多的 Web 应用程序被重新设计,在更改的过程中,这些问题出现的频率甚至会更高。如果您参与了针对 Web 2.0 的任何 Web 应用程序重新设计,这里将给出您可能很快就会提出的一些问题的答案。
- 如果我不需要会话持久性,是否将其关闭?
是的,可以将会话管理配置为使用内存内会话(后者实际上是缺省设置)。还可以在此模式中使用 HttpSession,但如果出现错误,存储在 HttpSession 中的数据将丢失。
- WebSphere® Application Server Network Deployment 提供的会话持久性选项有哪些,各自的优缺点是什么?
HttpSession 的两个主要选项是数据库持久性和内存到内存复制。SipSession 复制只能使用内存到内存复制。在 IBM® WebSphere Application Server Network Deployment 中,内存到内存复制使用数据复制服务(Data Replication Service,DRS)。此外,IBM WebSphere eXtreme Scale 的 ObjectGrid (OG) 功能还提供用于 HttpSession 的内存到内存复制。
-
数据持久性是使用最广泛的选项。在不考虑数据库运行所需的额外硬件的情况下,数据库持久性的性能也好于内存到内存复制。此解决方案的另一个优势是能够处理应用服务器的级联故障,而这在内存到内存配置中只有使用多个副本才有可能实现。数据库持久性的缺点在于数据库的成本,特别是存储在数据库中的会话数据本身应该具有高可用性的情况下更是如此。
-
DRS 内存到内存解决方案是适用于很多部署的解决方案。DRS 是“尽力服务”型内存到内存复制,根据数据规模和会话数量的不同,其性能比数据库持久性略微差一些。DRS 的主要优势在于可以避免数据库成本。DRS 的缺点是,比其他选项的可靠性差一些。尽管我们说 DRS 是“尽力服务”型,在出现故障时会话可能会丢失,但在经过适当优化的系统中,会话丢失的几率非常小。
-
第三个选项是 OG 内存到内存解决方案。此解决方案的优势在于,它提供从非尽力服务的异步服务到有保证的同步事务复制的所有选择。相对于大多数数据库解决方案而言,其成本相对较低。其主要缺点在于,会在 WebSphere Application Server Network Deployment 之上增加额外的成本(虽然这个成本比大部分数据库许可证成本都低)。
-
- 如果我需要万能的通用体系结构,应该选择哪一个?
在我看来,我会首先选择数据库持久性解决方案,并在 OG 内存到内存解决方案方面投资来减少数据库成本。数据库持久性方案是使用最广泛的体系结构,其性能也是最好的。
- 在什么情况下数据会丢失?
本文转自IBM Developerworks中国