1.测试代码编写:
我们首先写一个demo,该demo在没有terracotta的环境下执行一次,看看结果
我们首先先写一个简单的计数器代码(我们这个例子制定共享TerracottaDemo类的demo对象,它包含的count和inst对象也就随之被整个集群共享了):
package com.broada.simpleparallel; public class Main implements Runnable{ private Object lock = new Object(); private int count = 0; private static Main inst = new Main(); /** * @param args */ public static void main(String[] args) { new Thread(inst).start(); new Thread(inst).start(); } public void run() { //keep increasing count by one every few seconds while(true){ synchronized(lock){ count++; System.out.println(Thread.currentThread().getName() + " increased count to:"+count); } try{ Thread.sleep((int)(5000*Math.random())); } catch(Exception e){ e.printStackTrace(); } } } }
执行,开启不同的进程进行执行,看看结果
<!--[endif]-->
我们可以看出,正常情况下各个进程调用各自JVM中的对象,并没有任何的共享
2.下载、安装(此文档主要是在windows单机环境下进行安装):
(1).下载Terracotta,下载前需要注册帐号才能进行下载:http://terracotta.org/
(2).注册成功后进行邮件验证,验证成功后点击网站”open source”后,可以对其产品Ehcache、Quartz、BigMemory下载,我们下载terracotta (目前最高版本: terracotta-3.7.5.tar.gz、terracotta-3.7.5-installer.jar),我们这里使用terracotta-3.6.2-installer.jar进行安装,安装步骤很简单,如下图所示
3.配置Terracotta
(1).创建tc-config.xml文件(可以通过config-samples文件夹下的tc-config-express-reference.xml文件进行修改),该文件是描述client节点在TC Server中行为的唯一信息,也是我们的程序作为Terracotta Client节点添加时主要的内容
1. <?xml version="1.0" encoding="UTF-8"?> 2. <!-- 3. 4. All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. 5. 6. --> 7. <tc:tc-config xmlns:tc="http://www.terracotta.org/config" 8. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 9. xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-6.xsd"> 10. <!-- Server is colocated with client and DSO is listening on 11. default port (9510). --> 12. <servers> 13. <server host="127.0.0.1" name="server1"/> 14. </servers> 15. 16. <!-- Tell DSO where to put the generated client logs. 17. See the Terracotta Configuration Guide and Reference for additional 18. information. --> 19. <clients> 20. <logs>H:/soft/Terracotta/terracotta-3.6.2/client-logs</logs> 21. </clients> 22. 23. <application> 24. <dso> 25. <!-- The app requires these custom objects/classes to be shared - the following declarations 26. tell DSO which ones they are. When the app runs under DSO, instances of these classes 27. will broadcast changes in their state. 28. 29. A best practice (and an MVC pattern) when writing an app that you intend to cluster via Terracotta is to group the 30. classes you want to share under a single package. This makes the list of instrumented classes more concise. 31. 32. The following <include> instruments all of the classes found in all of the 33. packages of our sample app. --> 34. <instrumented-classes> 35. <include> 36. <class-expression>com.*</class-expression> 37. </include> 38. </instrumented-classes> 39. 40. <!-- We declare the field 'com.broada.simpleparallel.Main.inst' a root, making it 41. available to all instances of our app that run via DSO. --> 42. <roots> 43. <root> 44. <field-name>com.broada.simpleparallel.Main.inst</field-name> 45. </root> 46. </roots> 47. <locks> 48. <autolock> 49. <method-expression>void com.broada.simpleparallel.Main.run()</method-expression> 50. <lock-level>write</lock-level> 51. </autolock> 52. </locks> 53. </dso> 54. </application> 55. </tc:tc-config>
(2). 拷贝tc-config.xml到%tc_home%/bin和%tc_home%/platform/bin下
(3). 把上面的线程的代码例子打成TerracottaDemo.jar包,拷贝到%tc_home%/platform/bin下
4.启动tc server
进入到%tc_home% /bin目录,执行start-tc-server.bat,未执行参数-f<tc-config.xml>启动时,启动程序会使用tc.jar包里自带的默认配置文件’com/tc/config/schema/setup/default-config.xml’
因此,我们要执行的命令是start-tc-server.bat –f tc-config.xml,以tc-config.xml配置的方式启动服务器,截图如下:
服务器成功启动后,可以开启Terracotta Developer Console控制台来看看:
5.运行demo
在windows命令行下进入%tc_home%/platform/bin,输入命令执行:
dso-java.bat –cp TerracottaDemo.jar com.broada.simpleparallel.Main
分别开启2个不同的线程执行此demo,观察结果
控制台上的界面:
可以发现两个客户端成功连上
6.分析测试结果:
可见计数器已经被2个Java程序实例所共享,每个程序有一个线程访问计数器,从上面可以看到,整个Java代码没有作任何改动。只是增加了一个tc-config.xml文件,从tc-config.xml文件中的配置内容可以看出,terracotta还是做了很多的工作的,而且已经比较完善,其实不管它是结合自己的产品ehcache、quartz进行整合,还是结合apache下的相关产品进行整合,terracotta可以整合的产品较多,因此我们也没有必要一个一个去搭建,它们的整合过程只是在配置的方式上有所不同,其实我们在深入了解它的原理后在进行其他产品的整合,其实都是一个简单的过程。
相关推荐
根据测试结果,在采用Terracotta搭建的Tomcat集群中,即使当节点数量增加到8个时,集群的整体吞吐量依然保持着线性增长的趋势。 #### 安装与配置流程 为了便于使用Terracotta搭建Tomcat集群,Terracotta提供了一个...
在本文中,我们将深入探讨Terracotta的技术细节、其在集群负载中的优势,以及如何利用terracotta-3.6.0版本来优化应用性能。 **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式...
1. **环境搭建**:实验使用了两台后端服务器(192.168.5.237和192.168.5.243),每台服务器上部署了一个Tomcat实例,以及一台负载均衡器(192.168.5.186)使用Nginx进行流量分配。 2. **测试过程**:通过多次尝试...
Terracotta是一款开源软件,它提供了一种高效且可靠的解决方案,允许在集群环境中实现Web Session的共享,从而确保用户在不同服务器间的无缝切换。本文将深入探讨如何利用Terracotta来实现Web Session的同步。 ** ...
在实际测试中,当 Terracotta 集群规模扩展到 8 个节点时,系统吞吐量仍能保持线性增长。 3. ** Tomcat 搭建 Web 应用集群的传统方法** - **负载均衡器粘 session**:所有同一 session 的请求均发送到同一 Tomcat ...
这一过程涉及准备阶段、创建配置文件、编写ServerArrayTest.java代码以及启动Terracotta Server实例等步骤。 ##### 非停止/重新加入(Nonstop/Rejoin) Terracotta的非停止功能允许系统在发生故障或维护时继续运行...
Demo of ehCache distributed caching with terracotta in glassFish v3 可以参考:http://blog.csdn.net/guobin0719/archive/2011/04/25/6361940.aspx
将Terracotta部署在两台PC上,每台机器的IP地址分别为192.168.2.13和192.168.2.19,这是为了创建一个集群环境,确保高可用性。 接着,要在两台机器上安装不同版本的Tomcat,如Tomcat 6.0.18、Tomcat 5.5.26和Tomcat...
2. **集群支持**:通过将应用程序的运行时环境扩展到多台机器,Terracotta可以实现高可用性和负载均衡。当一台服务器出现问题时,其他服务器可以接管工作,保证服务不中断。 3. **无侵入性集成**:Terracotta能够...
在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license.key)。这两个文件在2014年05月12日被标记为最新版本,且适用于Windows操作系统。 **...
- **环境搭建**:确保每台计算机安装了 JDK、Apache Tomcat 和 Terracotta,并正确设置了系统环境变量。 - **tc-config.xml 配置**:此文件位于 Terracotta 安装目录下的 samples 文件夹中,需要根据实际情况修改 ...
当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...
Terracotta 3.2.1 英文文档
terracotta-ee-3.5.2破解版
而"工具"则可能指的是Terracotta提供的工具,如性能监控、配置管理或者集成开发环境插件等。 压缩包子文件的文件名称 "Memcached" 是一个流行的分布式内存对象缓存系统。它广泛用于Web应用,以减少数据库负载并提高...
terracotta license.key ,
**Ehcache测试Demo详解** Ehcache是一款广泛使用的开源Java缓存系统,它提供了内存和磁盘存储的二级缓存机制,能够显著提升应用程序的性能。本篇将基于提供的"ehcache_test"压缩包文件,详细介绍如何在Java项目中...