什么是Terracotta for Spring
Terracotta for Spring是基于Spring应用的运行时,它为Spring 应用提供了透明的高性能集群支持,对应用代码和部署及配置流程影响都很小。
它通过在应用下面的堆级别进行集群而不是直接集群应用。
这使得在需要扩展的应用开始设计时不考虑集群,而在应用需要扩展或者要保证高可用性和故障恢复时,他们只需要在Terracotta 配置文件中定义哪些Spring应用上下文中的beans需要进行集群。
Terracotta for Spring 使得应用能够被自动和透明的集群,还保证在集群间的语义和单节点一样。
从宏观上看,Terracotta for Spring提供了:
HTTP session状态的集群:保证Spring Web Flow中的用户状态和扩展仓库或放入HTTP session的其它状态的高可用性和故障恢复能力。
Spring bean的集群:Springbean的生命周期语义和域在集群间被保存,它们在“逻辑”上相同的ApplicationContext中。
目前能被集群的bean类型是singleton和session scoped。
用户可以声明式配置哪个application contexts中的哪个bean需要被集群。
透明集群POJO:不需要修改已有的代码,甚至不需要源代码。
应用基于很少的声明式XML 配置文件,在载入期透明的生效。
Terracotta for Spring不需要实现Serializable, Externalizable或其它接口的类。
能这样实现的原因它并没有使用序列化,而只是将实际的差量和已经改变了的数据传输给当前需要的节点 (lazily)。
虚拟内存管理:它也提供分布式垃圾收集和虚拟堆功能。
比如,由于物理内存在需要时被换入换出,它能在一个4G RAM的机器上运行需要200G堆的Web应用。
这也意味着你不需要关心Spring Web Flow 会话数据的大小是否超过了物理堆大小。
参考文档:
http://www.infoq.com/cn/articles/spring-web-flow-terracotta(用Spring Web Flow和Terracotta搭建Web应用->企业对扩展性和高可用性的需求)
http://terracotta.org/downloads/open-source/catalog(Terracotta下载)