1. Introduction
Terracotta 在其官方文档中的定义是一种透明的集群服务,也可以看成是JVM级别的集群。其中“透明”的含义并不是指已有程序无需做任何改动就可以使用Terracotta ,但是使用Terracotta 的代码无需实现特定的接口,也不依赖各种magic beans。通常意义上的“集群”是指多个应用通过网络通信、共享数据等,但是这种集群方式通常要求在应用程序中加入集群相关的代码。Terracotta 是在应用程序之下,JVM级别上的集群。这使得应用程序从复杂的集群相关的逻辑中解放出来,从而可以关注在业务逻辑本身。
Terracotta是开源的,并且可以集成在很多主流的开源软件中,如Jetty、Tomcat、Spring、Geronimo和EHCache等。Terracotta 的核心组件有两个:客户端类库(client libraries)和服务端进程(Terracotta server),它们之间通过TCP/IP通信。Terracotta server独立于各个应用程序,它负责对集群的集中管理;客户端类库则用于加入集群。
Terracotta 的最新版本是2.7.3,可以从http://www.terracotta.org/下载。其Windows安装文件100多M。默认的安装目录是C:\Program Files\Terracotta。安装后进入到bin目录执行start-tc-server.bat就可以启动Terracotta server。从Windows开始菜单TerraCotta 2.7.3 -> Administrator Console启动Terracotta 的管理控制台。启动管理控制台后,使用默认的Server Host和JMX Port,点击Connect按钮。当TerraCotta管理控制台连接到Terracotta server之后,会显示类似于下图的界面:
其左侧树形控件的Servers节点会显示连接到的Terracotta server的详细信息。此时由于没有客户端程序连接到Terracotta server,因此Cluster Object节点和Clients节点内容为空。接下来演示一个Terracotta 附带的例子应用。通过Terracotta 2.7.3 -> Terracotta Welcome启动Terracotta Welcome程序,单击Sample Applications链接。在Sample Application Launcher中单击Shared Graphics Editor下边的Launch链接。在Shared Editor启动后,随意绘制几个图形。然后 回到Sample Application Launcher中再次单击Shared Graphics Editor下边的Launch链接。第二次启动的Shared Editor中会显示出之前绘制的图形,并且在任何一个Shared Editor中绘制的图形都会被同步到另外的Shared Editor中。接下来回到Terracotta 管理控制台,可以看到Clients节点中包含了两个客户端程序的信息。Cluster Object节点中包含了共享对象的信息。此时如果把所有的Shared Editor都关闭,那么Clients节点的内容变为空,但是Cluster Object节点中仍然包含了共享对象的信息。如果再次启动一个Shared Editor,那么这个Shared Editor中会显示之前的Shared Editor关闭时的图形。最后,通过bin目录中的stop-tc-server.bat停止Terracotta server。
最常见的应用Terracotta 的场景是分布式缓存、Session复制和网格计算等。通过Terracotta 在集群中共享的对象不必是可序列化的(但必须是portable的,portable是Terracotta 引进的一个概念,会在以后详细介绍)。当集群中的某个应用对共享对象进行修改的时候,这些修改会被同步到Terracotta server。Terracotta server可以对这些修改进行持久化保存,同时Terracotta server可以被配置成Master/Slave模式,这些都提供了高可用性。
设想一个使用Terracotta 进行Session复制的场景: Tomcat A、B和C通过TerraCotta进行session复制,如果使用sticky load balancing,那么相同session的多个请求都会被发送到相同的Tomcat,比如A。A对该session的修改会被同步到Terracotta server,但是Terracotta server不会将这些修改同步到B和C(因为在B和C上不会访问到这个session),这样就减少了数据同步的次数。假设A由于某种故障而停止,那么load balancer可能会将该session的请求发送给B,在B的应用访问这个session的时候,TerraCotta才会将A之前对这个session的修改同步到B。此外,由于Terracotta 在同步的时候并没有使用序列化机制,因此它在同步数据的时候并不是每次都将整个session对象序列化后进行传输,而只是对session里改变的部分进行同步(Terracotta 使用了字节码加强的技术,拦截了包括内存读写在内的指令),这样就大大减少了网络传输的数据量。
- 大小: 8.4 KB
- 大小: 76.1 KB
分享到:
相关推荐
Demo of ehCache distributed caching with terracotta in glassFish v3 可以参考:http://blog.csdn.net/guobin0719/archive/2011/04/25/6361940.aspx
Terracotta
java ehcache terracotta 集群, 分布式缓存配置
terracotta集群负载,是个好东西
Terracotta 3.2.1 英文文档
terracotta-ee-3.5.2破解版
terracotta license.key ,
其实terracotta集群tomcat这方面的资料也算不少了··但还是会很容易出现错误·· 希望我这个文档能帮助大家!
Terracotta实现基于Tomcat的Web应用集群
ehcache的terracotta方案的比较.docx
记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用
terracotta-eclipse-plugin-3.7.7-2013-08-19_16-03-48.tar(terracotta的Eclipse插件) 发现官网挺卡的,有时候下不了,先传上来吧,供国内用户下载,这个算最新的吧。2014-02-17下载的。
2014年05月12日最新版本, Windows版本 terracotta-ee-4.1.2.jar,terracotta-license.key
通过_Terracotta实现基于Tomcat的Web应用集群
terracotta-3.7.7.tar.gz 官方网站卡得要死,有时候不一定能下载,把最近自己用的,算最新版吧,提供在国内网站下载吧。 2014-02-17下载的。
terracotta完整开发插件,可以作为eclipse的插件,也可以单独使用,功能齐全;
terracotta-toolkit-1.3-runtime-3.2.0.jar 集群实现JAR
使用terracotta实现session共享的证实实验