Terracotta简单使用

Terracotta+tomcat集群配置详细说明(写了一晚上。。) Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在session同步上,相当于对tomcat第二种集群实现机制进行了优化,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。在对比测试中,采用Terracotta搭建Tomcat集群,节点达到8个时候,整个集群的吞吐量还一直是线性增长的。 立即下载

测试代码编写

我们首先写一个demo,该demo在没有terracotta的环境下执行一次,看看结果

我们首先先写一个简单的多线程代码(我们这个例子制定共享Main类的demo对象,它包含的count):

Java代码 复制代码 收藏代码
  1. package simpleparallel;
  2. public class Main implements Runnable{
  3. private Object lock = new Object();
  4. private int count = 0;
  5. private static Main inst = new Main();
  6. /**
  7. * @param args
  8. */
  9. public static void main(String[] args) {
  10. new Thread(inst).start();
  11. new Thread(inst).start();
  12. }
  13. public void run() {
  14. //keep increasing count by one every few seconds
  15. while(true){
  16. synchronized(lock){
  17. count++;
  18. System.out.println(Thread.currentThread().getName() + " increased count to:"+count);
  19. }
  20. try{
  21. Thread.sleep((int)(5000*Math.random()));
  22. }
  23. catch(Exception e){
  24. e.printStackTrace();
  25. }
  26. }
  27. }
  28. }
package 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();
            }
        }
       
    }

}

执行,开启不同的进程进行执行,看看结果:

上述执行环境是在win下,通过以上的执行情况我们可以看出,正常情况下各个进程调用各自JVM中的对象,并没有任何的共享

下载、安装
下载Terracotta,下载前需要注册帐号才能进行下载:
http://terracotta.org/
:

terracotta-3.7.0-installer.jar

下载地址http://terracotta.org/downloads/open-source/catalog,需要注册账号。

安装方法一:解压相应的tar文件到相应的目录即可(Linux版本)即可
安装方法二:通过java –jar terracotta-3.7.0-installer.jar

Terracotta Server配置方式
1、 单机,无持久化:服务器把集群要管理的数据保存在内存中,当数据量大于服务器可用内存的时候,会发生内存溢出错误。这种模式一般只在开发中使用;
2、 单机,持久化:服务器把集群要管理的数据保存在硬盘中,利用服务器上的内存作为缓存,以提高常用数据的访问速度。当数据量大于服务器可用内存的时候,服务器会把不常用数据从内存中移除,这样就不会发生内存溢出问题。当服务器宕机,然后被从新启动以后,硬盘中的数据被从新激活,这样集群中共享的数据不会丢失。这种配置提供了一定的灾难恢复(Fail over)的能力,但是还是无法做到高可用性(HA);
3、 双机或者多机镜像(mirroring):一般由两台或者多台物理服务器互为镜像。其中一台作为主服务器支持集群运行。其它备用服务器只是对数据做镜像,并且监视主服务器的状态。当主服务器发生故障宕机的时候,其中一台备用服务器自动升级为主服务器,接管整个集群的支撑工作。这样一来整个集群还继续正常运行,不会受任何影响。这种配置可以实现高可用性。一般对于这种配置模式,我们还把服务器数据配置为持久化模式,但是如果内存数量不是问题,用户也可以选择非持久化;
4、 服务器阵列分片模式(Server Array Striping):这是Terracotta FX系列产品独有的高端企业级特性,它主要用于提高集群性能。当集群中数据量和数据访问频率太高的时候,可以配置多台服务器,分别负责一部分集群数据的服务。比如集群共享数据达到1G个对象,如果用5台服务器做分片,每一台服务器可以负责2千万个对象。这样就实现了Terracotta服务器的负载均衡。这种数据分片的策略,也就是说哪个数据对象保存在哪个服务器上,对开发人员和实施维护人员是完全透明的。当服务器吞吐量不能满足要求的时候,用户可以考虑修改代码,对共享数据和应用系统中的数据访问算法进行优化;也可以简单地增加阵列分片服务器数量。后者往往是性价比比较高的方式。用户还可以考虑让两台服务器互为镜像,让多个镜像再组合成阵列分片。这样每个镜像做到高可用性,多个镜像在一起,实现集群性能的提高;

本例子实现本机多进程共享count。

1、 创建tc-config.xml文件,存放到terracotta根目录下(可以通过config-samples文件夹下的tc-config-express-reference.xml文件进行修改),该文件是描述client节点在TC Server中行为的唯一信息,也是我们的程序作为Terracotta Client节点添加时主要的内容(为了能够让任何节点都在不修改的情况下都能成为主节点,我在配置文件中配置了一些冗余的信息,以及在每个节点都建立了相同的文件夹):
每个节点都有红框中的文件夹

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <tc:tc-config xmlns:tc="http://www.terracotta.org/config"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-6.xsd">
  5. <servers>
  6. <server host="%i" name="localhost">
  7. <dso-port>9510</dso-port>
  8. <jmx-port>9520</jmx-port>
  9. <data>/terracotta/server-data</data>
  10. <logs>/terracotta/server-logs</logs>
  11. <statistics>/terracotta/cluster-statistics</statistics>
  12. </server>
  13. </servers>
  14. <clients>
  15. <logs>/terracotta/client-logs</logs>
  16. </clients>
  17. <application>
  18. <dso>
  19. <instrumented-classes>
  20. <include>
  21. <class-expression>simpleparallel.Main</class-expression>
  22. </include>
  23. </instrumented-classes>
  24. <roots>
  25. <root>
  26. <field-name>simpleparallel.Main.inst</field-name>
  27. </root>
  28. </roots>
  29. <locks>
  30. <autolock>
  31. <method-expression>void simpleparallel.Main.run()</method-expression>
  32. <lock-level>write</lock-level>
  33. </autolock>
  34. </locks>
  35. </dso>
  36. </application>
  37. </tc:tc-config>

2、 把上面的线程的代码例子打成jar包,目录结构

3、启动tc-server

C:\terracotta-3.7.0>bin\start-tc-server.bat tc-config.xml

4、启动客户端

C:\terracotta-3.7.0>platform\bin\dso-java.bat -cp main.jar simpleparallel.Main

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

参考:http://yale.iteye.com/blog/1560539

terracotta 集群设置说明(中文) 记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用 立即下载

相关推荐

使用terracotta进行web session 同步

NULL 博文链接:https://dutianzhao.iteye.com/blog/2154040

设计模式之访问者模式

访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式适用于数据结构相对稳定的系统。 访问者模式把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。 访问者模式的目的是把处理数据结构分离出来。 有比较稳定的数据结构,又易于变化的算法的话,使用访问者模式就是比较适合的,因为访问者模式使得算...

yeyueyouhun的博客 318

Coze知识库搭建:智能化管理与高效检索实践

知识管理系统是现代企业信息资产管理的核心基础设施,其核心原理是通过结构化存储和智能检索技术实现知识的快速流转。在技术实现上,基于NLP的语义理解引擎和知识图谱构建是关键,能够显著提升检索准确率和知识关联性。以Coze平台为例,其针对中文场景优化的分词算法和多模态处理能力,可有效解决技术文档管理中的术语识别和格式兼容问题。这类系统在开发团队知识沉淀、新员工培训等场景中价值显著,特别是当集成RBAC权限模型和自动化备份策略后,既能保障信息安全,又能实现持续的知识迭代。通过合理配置同义词扩展和权重调整,可使搜索命

weixin_29041195的博客 262

Terracotta为Ehcache实现应用支持分布式缓存和应用session共享

目录 Terracotta产品介绍 Terracotta服务器的一些关键功能包括: TC Server 4.3.x入门 下载并安装 1-下载Terracotta服务器。 2-更新类路径 3-配置Ehcache 笔记 启动Terracotta服务器 1-配置Terracotta服务器 2-启动Terracotta服务器 Terracotta产品介绍 https://github.com/terracotta-oss Terracotta服务器为Terracotta产品(例如E...

纸上得来终觉浅,绝知此事要躬行 1300

QFN封装芯片手工焊接实战:从焊盘处理到拖焊技巧

本文详细介绍了QFN封装芯片手工焊接的全过程,从焊盘处理到拖焊技巧,再到常见问题的现场修复方法。通过实战经验分享,帮助工程师和DIY爱好者掌握0.5mm小间距QFN芯片的焊接技术,提升焊接成功率和质量。重点讲解了垂直与平行拖焊手法的对比应用,以及焊后清理与质量检验的关键步骤。

weixin_42652674的博客 532

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化

本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。

weixin_29168393的博客 487

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

<!-- google_ad_client = "pub-7633566524745700";/* 336x280, 优快云 created 8/22/09 */google_ad_slot = "2714927992";google_ad_width = 336;google_ad_height = 280;// -->

老马的专栏 1万+

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

Terracotta - 分布式共享对象

Terracotta是一种分布式java集群技术,它巧妙得隐藏了多个分布式JVM带来的复杂性,使得java对象能够透明得在多个JVM集群中进行分享和同步,并能够进行持久化。从某种意义上讲它类似于hadoop中的zookeeper,可以作为zookeeper之外的另外一种选择。这篇文章谈谈Terracotta集群是如何工作的。本文的主要内容译自文献1。 架构 Terracotta采用的是一种被称...

weixin_30622107的博客 254

Hermes接入IMA知识库全攻略:将知识库装进你的Hermes智能体

本文详细介绍了如何将IMA知识库功能接入Hermes Agent平台,实现一站式笔记管理和知识库操作。主要内容包括:获取IMA访问凭证、下载技能包、配置凭据(支持文件和环境变量两种方式)、验证配置有效性,以及实际应用演示(查询知识库列表、创建笔记并添加到知识库)。文章还提供了常见问题解决方案,如认证失败处理、版本更新等。通过该集成,用户可在Hermes中直接调用IMA的笔记创建、知识库管理等强大功能,提升工作效率。

小石头的专栏 641

第二节:Vben Admin 登录逻辑梳理和对接后端准备

第一节,我们已经配置了前端环境,运行起来了我们的Vben Admin的项目。本节内容,我们先熟悉下项目的目录和文件,然后开始准备对接后端程序路由在 src/router页面在 sr/views本节前端登录逻辑梳理完成了,后端只要在/api/login 接口编写返回逻辑,前后段就可以打通了,具体详情我们下一节介绍。

cuiwin的专栏 5084

Terracotta集群快速安装

这个文档告诉你怎样为一个用Ehcache cache的应用添加Terracotta 集群。前提是这个应用运行在:1、    在一个单独的jvm上2、    一个用Ehcache响应的集群步骤如下:一、    需要条件JDK1.5及以上版本Terracotta3.1.1及以上版本所有被集群的对象是可串行化的二、    安装分布cache添加以下

在优快云寻找woshizn 1448

基于ESP32的智能厨房控制系统开发

随着智能家居技术的发展,越来越多的家庭开始将传统的厨房设备进行智能化改造,以提高烹饪效率和生活质量。智能厨房控制系统是物联网(IoT)应用的重要组成部分,它将家居设备、传感器和网络结合起来,提供便捷的控制与监测功能,使厨房的烹饪过程更加智能、便捷和安全。基于ESP32的智能厨房控制系统不仅能够实现远程控制和监控,还能实现温度、湿度、烹饪状态的实时反馈,甚至具备智能化的推荐和自动化控制能力。ESP32是一款功能强大、集成度高的嵌入式开发平台,具有Wi-Fi和蓝牙双模通信能力,广泛应用于物联网设备的开发。

2201_76125393的博客 658

Terracotta

Terracotta 3.2.1简介 (一) 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 hibernatejava集群服务器EhcacheQuartzTerracott Terracotta开源项目以及Terracotta公司 Terracotta是一款由美国Terracotta公司开发的著名开源Java集群...

baimo7074的博客 246

零基础教你学RDMA驱动开发:从入门到精通--第6章 内存管理与DMA映射​6.2 DMA地址转换:内核dma_map_single()与硬件IOVA(I/O虚拟地址)​

本文深入探讨RDMA驱动中DMA地址转换机制,重点分析内核dma_map_single()函数与硬件IOVA的作用。主要内容包括:1)DMA地址转换的必要性,解决CPU虚拟地址与HCA设备DMA地址的空间割裂问题;2)内核DMA映射机制实现原理,涵盖无IOMMU(直接物理地址映射)和有IOMMU(IOVA转换)两种场景;3)硬件IOVA的工作流程及其与RDMA内存注册的结合;4)RDMA驱动开发中的关键问题,如缓存一致性、映射方向错误、IOVA泄漏等;5)以mlx5驱动为例的实践分析。文章强调DMA地址转换

xiaoheshang_123的博客 239

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Terracotta+Tomcat集群

                              Terracotta+Tomcat集群   Terracotta svn:  http://svn.terracotta.org/svn/forge/projects/ 转载: http://blog.youkuaiyun.com/lima01/article/details/4379572 http://blog.163.com/comf...

超哥Blog 236

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

本文介绍如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。 基本原理简介一般利用Tomcat搭建Web应用集群有如下几种方法:1、利用负载均衡器的粘session的方式把所有同一session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群中各个to...

qianjian21 339

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Ehcache利用Terracotta方式同步缓存

1.下载并安装Terracottahttp://www.terracotta.org/ 2.启动Terracottabin/start-tc-server.bat 或 bin/start-tc-server.sh 3.代码Set值类:package my.test.terracotta;import java.io.InputStream;import

星星的技术专栏 9056

Quartz与Terracotta的集成

<!-- google_ad_client = "pub-7633566524745700";/* 336x280, 优快云 created 8/22/09 */google_ad_slot = "2714927992";google_ad_width = 336;google_ad_height = 280;// -->

老马的专栏 2968

terracotta

terracotta

momsbaby的博客 205

terracotta 集群(转)

Terracotta是一款由美国Terracotta公司开发的著名开源Java集群平台。它在JVM与Java应用之间实现了一个专门处理集群功能的抽象层,以其特有的增量检测、智能定向传送、分布式协作、服务器镜像、分片等技术,允许用户在不改变现有系统代码的情况下实现单机Java应用向集群话应用的无缝迁移。使得用户可以专注于商业逻辑的开发,由Terracotta负责实现高性能、高可用性、高稳定性的企...

Move Fast! 494

JVM CLUSTER Terracotta 配置文件中文简要说明

All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. -->  tc-config-reference.xml  This is a sample Terracotta configuration file. In it, you will find an 

radish的专栏 2609
上一篇: apache负载均衡和tomcat6集群和session复制
下一篇: Java多线程学习与总结(ThreadGroup)
TonyEm
博客等级 码龄18年 33粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值