Terracotta开源项目以及Terracotta公司

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

Terracotta公司目前在美国、欧洲、澳大利亚、印度等地有近百名员工,为Terracotta商业用户提供7x24技术支持、解决方案咨询等服务。同时在Terracotta开源产品之上提供适用于企业用户的高端产品。

Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及Java任务调度项目Quartz。经过对该项目的深度整合,Terracotta推出了易用性更高的分布式缓存、分布式任务调度以及分布式Web Session等快捷解决方案,进一步方便了开发人员开发分布式Java应用。

Terracotta核心平台DSO

Terracotta核心平台是一个基于JVM的集群解决方案,允许用户在不修改代码的情况下把单机Java应用程序运行在多JVM的集群中。

其主要功能特点如下:

  • 实现单机Java应用到集群环境的平滑移植
  • 允许Java程序像访问本地数据数据一样访问集群共享数据,并且实现对共享数据的集群范围内的访问同步
  • 提供给予网络的虚拟内存管理,允许Java程序访问超过其内存空间(heap)的数据
  • 数据保存在服务器端,因此客户端JVM宕机不会造成数据丢失
  • 增量数据传递,智能数据推送,最大限度减少对网络的负担,使得客户端JVM可以横向扩展
  • 主从服务器配置,支持多台从服务器,实现高可用服务器
  • 服务器分片,实现服务器数据存储及数据吞吐量横向扩展
  • 通过JMX开放服务器监控信息
  • 提供可视化监控和管理界面,大大方便对整合集群的共享数据、性能数据、软硬件指标等的实施监控、调试、优化

Terracotta DSO核心平台提供了一个稳健、高效、高可用、易用、易管理的Java集群平台。

Terracotta为了进一步帮助J2EE开发人员充分利用其核心平台提供的各项特性,针对Java开发人员常用的Java技术平台提供了一系列快捷模式(Express Mode)的解决方案,包括Ehcache分布式缓存、Hibernate分布式二级缓存、Web Session集群、

分布式Java任务调度Quartz等等。

使用快捷模式,可以避免客户端程序对JDK和应用服务器的依赖、避免配置tc-config.xml文件等等。用户直接拷贝相应的jar文件,对方案相关的配置文件进行简单修改(比如ehcache.xml, hibernate.cfg.xml文件等等),就可以实现集群化了。

后面将逐一介绍Terracotta快捷模式支持的解决方案。

分布式缓存-Terracotta Ehcache和Hibernate二级缓存

Ehcache是独立于Terracotta开发的开源Java缓存项目。由于其高效、易用等特点,已经被超过70%的Java开发人员直接活间接使用。

Ehcache也是Hibernate项目缺省,也是功能支持最完备的耳机缓存解决方案。

Terracotta于2009年收购了Ehcache项目,并且对其进行深度整合。

整合后的Ehcache保留了其原有的API,增加基于Terracotta集群的分布式缓存。用户可以通过对ehcache.xml的简单配置,实现对原有基于Ehcache构建的代码的集群化升级。

<ehcache>

<terracottaConfig url="someserver:9510"/>

<defaultCache

maxElementsInMemory="10000"

eternal="false"

timeToLiveSeconds="120"

/>

<cache name="com.company.domain.Pets"

maxElementsInMemory="10000"

eternal=”true”>

<terracotta clustered="true" coherent="false"/>

</cache>

<cache name="com.company.domain.Pets"

maxElementsInMemory="10000"

timeToLiveSeconds="3000">

 <terracotta clustered="true" coherent="true"/>

</cache>

</ehcache>

整合后的分布式Ehcache有如下特点:

  • 简单、易用的分布式缓存

    • 沿用Ehcache单机版API
    • 直接支持Hibernate二级缓存实现
    • 服务器集群支持
    • 减少数据库30%-90%负载
  • 高效、可靠
    • 本地内存的访问速度
    • 动态缓存数据持久话
    • 客户端于服务器端均可横向线性扩展
    • 自动数据分片
    • 虚拟缓存内存管理,无限缓存空间
    • 多级缓存动态均衡
  • 企业用户支持
    • 支持工业标准JMX
    • 可视化管理工具
    • 动态监控、调试、优化

由于Ehcache本身就是Hibernate标准二级缓存实现,因此将单机版的Hibernate二级缓存扩展到分布式缓存于将Ehcache扩展成分布式缓存一样简单。其优势也可以自动继承。

2010年3月,Terracotta推出了Ehcache 2.0,其中包含了大量的新的功能:

  • Hibernate 3.3二级缓存SPI的支持

    • Hibernate3.3以前为了保证数据库于缓存数据的一致性,对二级缓存的访问有大量的锁操作,导致并发性能不高;
    • 3.3以后,Hibernate二级缓存部分代码进行了重构,提出了新的CacheRegionFactory的接口。大大提高对二级缓存的使用效率。Ehcache 2.0完全支持新的缓存接口;
  • Java分布式事务的全面支持
    • Ehcache可以通过配置,设定一个缓存为XAResource,自动加入分布式事务管理器启动的分布式事务;
    • 能够自动检测常用的分布式事务管理器;
    • 支持Spring、EJB等的分布式事务管理
  • 延迟写(Write Behind)和直通写(Write Through)
    • 提供Writer接口,负责将缓存数据写入数据库或者其他存储介质中;
    • Write Behind允许将数据保存在缓存中,再用后台线程把缓存数据异步保存到数据库或者其他存储介质中。由于缓存数据保存在Terracotta服务器上,不会由于客户端JVM宕机导致数据丢失。Write Behind是通过缓存提高数据写入速度的有效方式;
    • Write Through则是在将数据写入缓存后,马上调用Writer写入数据库中;
  • 批量导入缓存数据
    • 为了保证缓存数据一致性,每一次写操作都有同步处理,对于大量数据导入影响比较大;
    • 提供了coherent标记,来打开或者关闭同步处理。缺省为true,提供同步功能;进行大量数据导入的时候,可以暂时关闭该标记,或者10倍以上的数据导入速度;
    • setCoherent(), isCoherent(), waitForCoherent()
  • Cache级别的一致性、可用性、数据分片等支持
    • Coherent标记
    • syncrhonizedWrite
    • copyOnRead/copyOnWrite
    • 集群事件监听
    • UnlockedReadsView
  • NonStopCache
    • 在Terracotta服务器阵列出故障的时候仍然能够继续工作
    • 不会锁死本地应用
    • 超时设置
  • 管理功能
    • 新的基于Web的管理界面
    • 大部分Cache配置可以在配置界面中实时修改、即时生效

待续。。。

Terracotta的更多相关文章

  1. Nginx+Tomcat+Terracotta的Web服务器集群实做

    1.准备工作两个Linux服务器,可以用VMware装一个,然后配置好再克隆一个,修改IP即可.Host1:192.168.0.79Host2:192.168.0.80先配置好jdk1.6.0和tom ...

  2. Terracotta收购Ehcache (转)

    随着Terracotta对Ehcache的收购成行,业界两大知名的开源Java缓存产品走到了一起.以提供JVM级“POJO集群”而闻名于世的Terracotta可以将运行在单个JVM上的多线程应用移植 ...

  3. 分布式缓存之Ehcache与terracotta - Terracotta服务器概念篇

    1.介绍 Terracotta服务器为Terracotta产品提供分布式数据平台.Terracotta服务器集群被称为Terracotta服务器阵列(TSA).Terracotta服务器阵列可以从单个 ...

  4. java.net.UnknownHostException: www.terracotta.org

    异常日志: java.net.UnknownHostException: www.terracotta.org at java.net.PlainSocketImpl.connect(PlainSoc ...

  5. simple Terracotta session 同步

    部署前提: 配置好java环境和已有tomcat实例. 地址1:http://vdisk.weibo.com/s/dzUJr1vLcAWHl 地址2:http://code.taobao.org/p/ ...

  6. Tomcat 下 Memcached 集群与 Terracotta 集群比较

    总结:Terracotta 集群配置要比Memcached 集群简单,但Terracotta 集群启动的速度要比Memcached 集群慢,性能Terracotta 集群要比Memcached 集群好 ...

  7. 403 for URL: http://www.terracotta.org/kit/reflector

    前面因为在一个项目中使用了ehcache.xml配置文件,后面启动tomcat的时候报下面的错误 java.io.IOException: Server returned HTTP response ...

  8. Terracotta设计原理分析--(部分内容来自官方描述)

    因为工作中历史产品采用了terracotta作为分布式缓存线性扩展平台,因此不得不提前对其原理做了相关了解,当然其中很多的设计思想和oracle.memcached的设计相似,但也有自己的亮点,那就是 ...

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

    [转]通过 Terracotta实现基于Tomcat的Web应用集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 tomcatweb session集群服务器负载均 ...

  10. Quartz与Terracotta的集成

    Quartz与Terracotta的集成 博客分类: Java&Socket 企业应用面临的问题 开源组件的应用 quartz任务集群数据库任务调度Terracotta  Quartz与Ter ...

随机推荐

  1. Django2.0路由补充之path,re_path及视图层

    以下是Django2.0版本 正则捕获到的参数都是字符串,所以如果函数需要用的其他数据类型,可以在函数中直接转换,也可以在路由中直接转换,如下: 下面实例是匹配整数,传过去的参数就是整数 from d ...

  2. 如何加快HTML页面加载速度

    1. 页面减肥 a. 页面的肥瘦是影响加载速度最重要的因素. b. 删除不必要的空格.注释. c. 将inline的script和css移到外部文件. d. 可以使用HTML Tidy来给HTML减肥 ...

  3. sqlserver数据库备份方法

    须事先准备一个工具curl,把它放在c盘.然后,在数据库所在服务器安装7z.最后把这2个存储过程执行,在sqlserver的代理中新建作业,即可实现备份操作. --备份指定数据库到本地和远程指定位置( ...

  4. HDU 4003 Find Metal Mineral (树形DP,经典)

    题意:给定一棵树图,n个节点,有边权,要派k<11个机器人从节点s出发,遍历所有的点,每当1只机器人经过1条边时就会花费该边的边权,边是可重复走的.问遍历完所有点的最小花费? 思路: 非常经典, ...

  5. 洛谷 P1901 发射站

    题目描述 某地有 N 个能量发射站排成一行,每个发射站 i 都有不相同的高度 Hi,并能向两边(当 然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比 它高的发射站接 ...

  6. 10个优秀的移动Web应用开发框架

    在最近几年里,移动互联网高速发展.市场潜力巨大.继计算机.互联网之后,移动互联网正掀起第三次信息技术革命的浪潮,新技术.新应用不断涌现.今天这篇文章向大家推荐10大优秀的移动Web开发框架,帮助开发者 ...

  7. PCL点云处理可视化——法向显示错误“no override found for vtk actor”解决方法

    转:https://blog.csdn.net/bflong/article/details/79137692 参照:https://blog.csdn.net/imsaws/article/deta ...

  8. jni 开发

    创建android工程 -> 添加native 函数 添加库之后: 1. 用javah 生成c语言.h头文件时, 在cmd 窗口中cd 到bin/classes 目录下执行下代码无效: java ...

  9. CPP-基础:函数指针,指针函数,指针数组

    函数指针 函数指针是指向函数的指针变量. 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个 ...

  10. 【tarjan 拓扑排序 dp】bzoj1093: [ZJOI2007]最大半连通子图

    思维难度不大,关键考代码实现能力.一些细节还是很妙的. Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于 ...