`
prettyzhou
  • 浏览: 34575 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Terracotta环境搭建以及测试demo

 
阅读更多

 

 

1.测试代码编写:

我们首先写一个demo,该demo在没有terracotta的环境下执行一次,看看结果
我们首先先写一个简单的计数器代码(我们这个例子制定共享TerracottaDemo类的demo对象,它包含的countinst对象也就随之被整个集群共享了):

    

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”后,可以对其产品EhcacheQuartzBigMemory下载,我们下载terracotta (目前最高版本: terracotta-3.7.5.tar.gzterracotta-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.分析测试结果:

  可见计数器已经被2Java程序实例所共享,每个程序有一个线程访问计数器,从上面可以看到,整个Java代码没有作任何改动。只是增加了一个tc-config.xml文件,从tc-config.xml文件中的配置内容可以看出,terracotta还是做了很多的工作的,而且已经比较完善,其实不管它是结合自己的产品ehcachequartz进行整合,还是结合apache下的相关产品进行整合,terracotta可以整合的产品较多,因此我们也没有必要一个一个去搭建,它们的整合过程只是在配置的方式上有所不同,其实我们在深入了解它的原理后在进行其他产品的整合,其实都是一个简单的过程。

 

 

  • 大小: 77.3 KB
  • 大小: 123.8 KB
  • 大小: 100.8 KB
  • 大小: 159.2 KB
  • 大小: 134.8 KB
  • 大小: 230.4 KB
分享到:
评论

相关推荐

    通过_Terracotta实现基于Tomcat的Web应用集群

    根据测试结果,在采用Terracotta搭建的Tomcat集群中,即使当节点数量增加到8个时,集群的整体吞吐量依然保持着线性增长的趋势。 #### 安装与配置流程 为了便于使用Terracotta搭建Tomcat集群,Terracotta提供了一个...

    terracotta

    在本文中,我们将深入探讨Terracotta的技术细节、其在集群负载中的优势,以及如何利用terracotta-3.6.0版本来优化应用性能。 **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式...

    使用terracotta实现session共享的证实实验

    1. **环境搭建**:实验使用了两台后端服务器(192.168.5.237和192.168.5.243),每台服务器上部署了一个Tomcat实例,以及一台负载均衡器(192.168.5.186)使用Nginx进行流量分配。 2. **测试过程**:通过多次尝试...

    使用terracotta进行web session 同步

    Terracotta是一款开源软件,它提供了一种高效且可靠的解决方案,允许在集群环境中实现Web Session的共享,从而确保用户在不同服务器间的无缝切换。本文将深入探讨如何利用Terracotta来实现Web Session的同步。 ** ...

    Terracotta+tomcat集群配置详细说明(写了一晚上。。)

    在实际测试中,当 Terracotta 集群规模扩展到 8 个节点时,系统吞吐量仍能保持线性增长。 3. ** Tomcat 搭建 Web 应用集群的传统方法** - **负载均衡器粘 session**:所有同一 session 的请求均发送到同一 Tomcat ...

    Terracotta

    这一过程涉及准备阶段、创建配置文件、编写ServerArrayTest.java代码以及启动Terracotta Server实例等步骤。 ##### 非停止/重新加入(Nonstop/Rejoin) Terracotta的非停止功能允许系统在发生故障或维护时继续运行...

    Demo - EhCache Distributed Caching With Terracotta in GlassFish v3

    Demo of ehCache distributed caching with terracotta in glassFish v3 可以参考:http://blog.csdn.net/guobin0719/archive/2011/04/25/6361940.aspx

    terracotta集群tomcat步骤

    将Terracotta部署在两台PC上,每台机器的IP地址分别为192.168.2.13和192.168.2.19,这是为了创建一个集群环境,确保高可用性。 接着,要在两台机器上安装不同版本的Tomcat,如Tomcat 6.0.18、Tomcat 5.5.26和Tomcat...

    terracotta-3.7.7.tar.gz

    2. **集群支持**:通过将应用程序的运行时环境扩展到多台机器,Terracotta可以实现高可用性和负载均衡。当一台服务器出现问题时,其他服务器可以接管工作,保证服务不中断。 3. **无侵入性集成**:Terracotta能够...

    terracotta-ee-4.1.2.jar,terracotta-license.key

    在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license.key)。这两个文件在2014年05月12日被标记为最新版本,且适用于Windows操作系统。 **...

    Terracotta学习文档

    - **环境搭建**:确保每台计算机安装了 JDK、Apache Tomcat 和 Terracotta,并正确设置了系统环境变量。 - **tc-config.xml 配置**:此文件位于 Terracotta 安装目录下的 samples 文件夹中,需要根据实际情况修改 ...

    ehcache-terracotta代码配置

    当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...

    Terracotta 3.2.1 英文文档(CHM)

    Terracotta 3.2.1 英文文档

    terracotta-ee-3.5.2

    terracotta-ee-3.5.2破解版

    http://www.terracotta.org/

    而"工具"则可能指的是Terracotta提供的工具,如性能监控、配置管理或者集成开发环境插件等。 压缩包子文件的文件名称 "Memcached" 是一个流行的分布式内存对象缓存系统。它广泛用于Web应用,以减少数据库负载并提高...

    terracotta license.key

    terracotta license.key ,

    ehcache 测试demo

    **Ehcache测试Demo详解** Ehcache是一款广泛使用的开源Java缓存系统,它提供了内存和磁盘存储的二级缓存机制,能够显著提升应用程序的性能。本篇将基于提供的"ehcache_test"压缩包文件,详细介绍如何在Java项目中...

Global site tag (gtag.js) - Google Analytics