最近一段时间我在学习 Terracotta,一种 JVM 级的集群化技术。infoQ 上的<<introduction to="" open="" terracotta="">> 是一篇简要介绍 Terracotta 技术原理和应用的文章,适合大家为了解 Terracotta 而去阅读。为了能更好的理解这篇文章,也希望能够对大家了解 Terracotta 有所帮助,下面我将这篇文章从</introduction> Object Identity and Serialization 开始的部分的每段大意写了出来。写的不好,大家凑合看吧(*^__^*) 嘻嘻……
对象识别与序列化<o:p></o:p>
Terracotta 不使用 Java 序列化去复制对象的改变。<o:p></o:p>
这种方式要比使用 Java 序列化去复制对象的改变更有效率,因为这种方式仅仅在集群中移动被改变了的数据而不是序列化整个对象图。除了更有效率,这种方式还有另外一个好处:可以保持对象的识别符(ID)。<o:p></o:p>
之所以许多其它的集群和缓存技术需要一个 GET/PUT API,是因为如果使用 Java 序列化在集群中移动改变了的数据,被改变的对象将要被反序列化,并且不得不替换存在了的对象实例。<o:p></o:p>
Terracotta 没有这种限制。<o:p></o:p>
(略)<o:p></o:p>
在我们的例子中,Catalog 中的Product 对象与 shopping cart 中的 Products 是堆中的相同对象。<o:p></o:p>
虚拟堆/网络附加存储<o:p></o:p>
Terracotta 可以让我们有效率地使用有很大的对象图的本地 JVM 堆。Terracotta 会根据实例的使用模式去裁剪共享的对象图的本地实例。Terracotta 在集群对象图上维持一个可配置的窗口,不适应一定比例的堆的片段将根据一个缓存策略被清除。当需要那些丢失的片段的时候,它们将会重新从服务器中被载入(fault into?)。你可以将 Terracotta 集群看作是任意大的虚拟堆或network-attached memory。<o:p></o:p>
这个特性将允许任意大的对象图“载入”标准大小的堆中。在我们的例子中,如果 Catalog 的数据量变得很大,在没有 Terracotta 的情况下,我们将投入大量的硬件资源去保持高可用性和高扩展性。<o:p></o:p>
(略)<o:p></o:p>
<o:p> </o:p>
你怎样和什么时候使用 Terracotta?<o:p></o:p>
下面列出的是四个有效使用 Terracotta 的用例:<o:p></o:p>
- HTTP Session 复制
- 分布式缓存
- <!---->POJO 集群<o:p></o:p>
- 协作、协调和事件
HTTP Session 复制<o:p></o:p>
在一个多服务器环境中进行 HTTP Session 复制可能是最熟悉不过的用例了。现在应用程序的设计趋势是诸如购物车这样的应用程序状态信息存储在一个例如数据库的外部系统(注:放在关系型数据库中对应用程序的性能是有影响的,更好的做法是放在一个公共服务器的内存中),这被称作“无状态”应用程序设计。<o:p></o:p>
这种“无状态”的方法并不是真的无状态。这种方法带来了两种负面影响,第一是对性能的影响,第二是对程序结构的影响。<o:p></o:p>
Terracotta 的 Session 复制允许应用程序的 Session 数据保持原有的位置和形式,从而使网络应用程序的软件架构依旧简单。<o:p></o:p>
Terracotta Session 复制通过允许任何应用程序去访问任何活动的 Session 来提供高可用性,无论那个 Session 是在哪里被创建的。它的扩展性很好,因为只有那些在 Session 中被改变了的数据会被复制,并且仅发送到需要它们的地方。如果没有其它的应用程序服务器在堆中拥有这个 Session,那么将没有其它的服务器会被发送这些修改。只有当服务器失败事件发生时,Session 数据才会被复制到其它应用程序服务器,并且仅发生在要求的时候。<o:p></o:p>
有了 Terracotta,你只需像在单个 JVM 环境中去使用 Session 即可,Terracotta 会很好的完成其它事情。<o:p></o:p>
在集群运行的时候,你能够看到整个集群中所有的 Session 的内容。在开发的时候,这被用来发现对 Session 的不恰当使用。在产品使用阶段,你能够立即观察到有多少活动的 Session,并且看到它们实时的变化。<o:p></o:p>
Terracotta 可以和很多流行的 Web 框架工作,诸如 Struts、Spring Web Flow 和 Wicket。<o:p></o:p>
<o:p> </o:p>
POJO 和 Spring 集群<o:p></o:p>
Terracotta 在集群中与 POJO 工作就如同是在单个 JVM 环境中简单,尤其是当你的应用程序使用了 Spring beans。<o:p></o:p>
Terracotta for Spring 通过集群 Spring beans,从而在集群中非侵入式地维护 Spring Framework。你可以像平常那样开发 single-JVM 的 Spring 应用程序,然后定义你想集群哪些 Spring Context 和在这些 Context 下的哪些 Spring bean。Terracotta for Spring 也包含对 Spring Web Flow 的支持(continuations?)。这项特性使构建在 Terracotta 集群上的 Spring Web 应用程序能够失败转移会话状态。<o:p></o:p>
<o:p> </o:p>
分布式缓存<o:p></o:p>
(略)<o:p></o:p>
<o:p> </o:p>
协作、协调和事件<o:p></o:p>
Terracotta 的集群并发的特性使它成为 JVM 之间非常理想的信号量。<o:p></o:p>
Terracotta 可以在集群上实现 Master-Worker 模式,从而处理并发事件。<o:p></o:p>
<o:p> </o:p>
总结<o:p></o:p>
Terracotta 是一个新型轻量软件栈的基础(什么意思,Terracotta 规模还要做大?)。Terracotta使得开源组件诸如Tomcat、Spring、Geronimo 和开源应用程序框架的 host? 可以组装在一起,并且以企业级的可用性和可扩展性被部署的JVM 级的集群技术可以轻易的被使用。<o:p></o:p>
分享到:
相关推荐
The Definitive Guide to Terracotta
《The Definitive Guide to Terracotta: Cluster the JVM for Spring, Hibernate and More》是一本在2008年获得了亚马逊四星半高评的技术书籍,专注于介绍如何使用Terracotta来实现Java虚拟机(JVM)的集群,并且...
### 《Terracotta 分布式JVM框架权威指南》核心知识点详解 #### 一、Terracotta概述 - **定义与背景**:Terracotta是一个高性能、易于使用的分布式内存解决方案,它允许开发者轻松地创建可扩展的Java应用程序。...
总结,使用Terracotta进行Web Session同步是一种强大且灵活的解决方案,能够帮助开发者构建可扩展、高可用的分布式Web应用。通过深入理解Terracotta的工作原理和配置,你可以更好地驾驭这一工具,为用户提供无中断的...
### Terracotta:分布式内存管理解决方案 #### 一、Terracotta概述 Terracotta是一种分布式内存管理和数据共享平台,其核心产品BigMemory Max旨在帮助应用程序实现数据在内存中的高效管理,尤其适用于分布式服务器...
在本文中,我们将深入探讨Terracotta的技术细节、其在集群负载中的优势,以及如何利用terracotta-3.6.0版本来优化应用性能。 **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式...
Terracotta集群Tomcat的配置是一项复杂而关键的任务,它涉及到分布式系统中的高可用性和负载均衡。以下将详细解释这个过程中的各个步骤和相关知识点。 首先,安装Terracotta 3.2.1版本是非常基础的一步。需要注意的...
总结起来,Terracotta 3.7.7是一个强大的工具,它通过分布式内存管理和集群技术,提升了Java应用的性能和可扩展性,对于需要处理大规模并发和高可用性的企业级应用来说,是一个值得考虑的解决方案。
总结,使用 Terracotta 与 Tomcat 集群相结合,可以创建出一个既具有高扩展性又具备高可用性的 Web 应用平台,解决了传统 session 管理方式的诸多问题。在实际部署中,开发者应根据具体业务需求和资源条件,合理选择...
### 通过Terracotta实现基于Tomcat的Web应用集群 #### 概述 本文主要介绍了如何利用Terracotta与Tomcat构建高效的Web应用集群。在实际应用中,通过集群技术可以显著提升系统的可用性和伸缩性,特别是对于高流量、...
Terracotta是一款强大的分布式内存管理工具,主要用于Java应用程序的集群化和数据共享。在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license....
总结,通过以上步骤,我们成功地在Java项目中配置了Ehcache与Terracotta,实现了分布式缓存的功能。这不仅提高了应用的响应速度,还增强了系统的可伸缩性和容错性。记住,实际应用中可能需要根据具体需求和环境进行...
Terracotta 3.2.1 英文文档
terracotta-ee-3.5.2破解版
terracotta license.key ,
### 使用Terracotta实现Session共享的关键知识点 #### Terracotta简介 Terracotta是一种开源的分布式内存技术,它提供了一种简单有效的方式来管理和共享应用程序的数据。对于Java应用程序而言,Terracotta可以实现...
记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用