分布式缓存之Ehcache与terracotta - Terracotta服务器概念篇
1、介绍
Terracotta服务器为Terracotta产品提供分布式数据平台。Terracotta服务器集群被称为Terracotta服务器阵列(TSA)。Terracotta服务器阵列可以从单个服务器,到一个用于高可用性(HA)的基本的双服务器串联,再到一个提供可配置的规模、高性能和深度故障转移覆盖的多服务器阵列。
Terracotta服务器的主要特性包括:
- 分布式内存数据管理:在内存中管理比数据网格多10-100x的数据
- 不复杂的可伸缩性:简单的配置和部署选项,用于扩展以满足日益增长的需求并促进容量计划
- 高可用性:正常运行和服务的即时故障转移
- 可配置的健康监测:Terracotta健康检查器监控客户端和服务器的健康状况
- 持久化状态:自动永久存储所有当前共享内存数据,并在服务器重启后实现快速的恢复
- 节点自动重连:临时断开的服务器实例和客户端重新加入集群,而不需要操作员干预
服务器目录说明
server
└─bin -- 可执行文件,如启动服务器的文件 start-tc-server
└─conf -- 配置文件
└─lib
└─plugins
2、配置文件
Terracotta配置文件是一个xml格式的文件,名为tc-config。
该文件用于配置单个Terracotta服务器阵列(TSA)条带的所有成员。
您可以使用工具包中提供的示例配置文件作为Terracotta配置的基础。一些示例中有描述配置元素的内联注释。
2.1 部分配置的解释
|
元素名称
|
描述
|
|
Servers
|
Servers部分定义了组成集群的所有服务器。通过配置和运行至少2个服务器,可以实现高可用性。
请注意,如果没有明确配置哪个服务器充当主动或被动的角色,这样可能会在集群的生命周期中发生变化。
服务器部分中的每个服务器元素都是由name属性指定的名称标识的: <server ... name="ServerName">
|
|
Plugins |
Plugins部分通过注册和配置可提供给这些服务器的附加服务,以及提供对所有服务可用的通用配置信息,扩展了列出的服务器的功能。 使用扩展点是服务器使用您的应用程序端点(服务)的必要条件。 |
|
Properties |
tc-properties部分公开了一个键-值对的列表,以进一步定制集群的行为。注意,这个部分通常是空的。 |
2.2 简单的配置示例
这是一个非常简单的服务器配置文件的示例。
<tc-config xmlns="http://www.terracotta.org/config">
<servers>
<server host="localhost" name="testServer0">
<logs>terracotta-kit-test/testServer0/logs</logs>
<tsa-port>26270</tsa-port>
<tsa-group-port>26271</tsa-group-port>
</server>
</servers>
</tc-config>
这显示了标准配置的关键组件,但是只描述了一个没有使用扩展点的服务器。
关键点:
- 配置命名空间http://www.terracotta.org/config。
- 只有一个名为testServer0的服务器。(服务器名称很重要,因为它在启动服务器时会被使用;在实际部署中,应该用完整的主机名或服务器的IP地址替换localhost。)
- 给出了一个日志目录的相对路径。(在实际部署中,应该用完整的主机名或服务器的IP地址替换localhost。)
- tsa-port是客户端连接到服务器时使用的端口(默认为9410)。
- 尽管在这种情况下没有其他服务器(默认为9530),但tsa-group端口是用于跨服务器通信的。
- 在上面的示例配置中,不可能重新启动或故障转移,因为重新启动支持需要一个扩展点,该扩展点提供了该功能,而故障转移至少需要在集群中至少有两个服务器。
2.3 参数替换
参数替换提供了在Terracotta服务器配置文件中使用预定义的系统属性替换变量的方法。因此,可以根据特定于机器的属性来智能地填充大量的字段。参数替换通常用于主机名、IP地址和目录路径替换。
可使用的参数替换如下:
|
参数名称 |
描述 |
|
%h |
完整的主机名 |
|
%i |
IP地址 |
|
%H |
用户主目录 |
|
%n |
用户名 |
|
%o |
操作系统名称 |
|
%a |
处理器架构 |
|
%v |
操作系统版本 |
|
%t |
临时目录(在Linux或Solaris上,例如,/tmp) |
|
%(property) |
JVM的Java系统属性(例如%(Java.home),%(logs.path)) |
|
%D |
时间戳 (yyyyMMddHHmmssSSS) |
可以在适当的地方使用这些参数,包括期望字符串或值路径的元素或属性。
3、启动服务器
启动脚本参数:
- [-f /path/to/tc-config.xml] - 指定配置文件路径
- [-n server_name] - 在配置了多个服务器的情况下指定启动服务器名称
On Windows:
cd <path/to/terracotta/kit>/server/bin
start-tc-server.bat -f <path/to/server/config>/tc-config.xml
On Unix/Mac:
cd <path/to/terracotta/kit>/server/bin
./start-tc-server.sh -f <path/to/server/config>/tc-config.xml
注意:在启动Terracotta服务器前,请先检查需要的java版本。Terracotta5.x需要Java 8的支持。
检查下面的信息日志,以确认服务器是否成功启动, Terracotta Server instance has started up as ACTIVE node on 0:0:0:0:0:0:0:0:9410 successfully, and is now ready for work.
windows下启动成功示例:

Terracotta服务器下载地址:http://www.terracotta.org/open-source/
分布式缓存之Ehcache与terracotta - Terracotta服务器概念篇的更多相关文章
- Java 开源分布式缓存框架Ehcache
http://www.codeceo.com/article/java-ehcache.html
- j2ee分布式缓存同步实现方案dlcache v1.0.0
现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...
- Java分布式缓存框架
http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...
- 5个强大的Java分布式缓存框架
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...
- j2ee分布式缓存同步实现方案dlcache
现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...
- EhCache RMI 分布式缓存/缓存集群
EhCache 系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点. EhCache 的主要特性有: 快速.精干 简单: 多种缓存策略: 缓存数据有两级:内存和磁盘, ...
- EhCache 分布式缓存/缓存集群
开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...
- EhCache 分布式缓存/缓存集群(转)
开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...
- EhCache+Redis实现分布式缓存
Ehcache集群模式 由于 EhCache 是进程中的缓存系统,一旦将应用部署在集群环境中,每一个节点维护各自的缓存数据,当某个节点对缓存数据进行更新,这些更新的数据无法在其它节点中共享,这不仅会降 ...
随机推荐
- pm2部署多个nodejs项目配置教程
实际项目部署中,我们服务器在启动的时候需要自动启动node服务.以前是通过liunx自带的命令启动.但是随着后台微服务越来越多.每次发布新程序.修改脚本太麻烦了.于是换成PM2来做. 1.首先安装pm ...
- admin的基础配置
admin自定义配置 一.admin.py 我们知道在models.py文件中创建的数据表,一方面我们可以通过视图函数对其进行增删改查,一方面我们也可以通过admin进行,通常我们是通过admin的前 ...
- jQuery 常用操作(转)
一.书写规则 支持链式操作: 在变量前加"$"符号(var $variable = jQuery 对象): 注:此规定并不是强制要求. 二.寻找元素 选择器 基本选择器 层级选择器 ...
- Ubuntu系统下的实用软件推荐
想要在ubuntu下工作? 又担心影响效率? 这些软件可以帮助你解决问题 ! 基本在windows上可以做到的功能, 在linux中也同样能够实现,而且自己寻找解决方案的过程才是最有趣的! 1.gua ...
- IOC杂谈(一)初识IOC
初衷 发现学习东西不单只是看,用,还有很重要一点就是记录,不然过个几个月再用到相同的知识时,你会发现你已经丢得差不多了,故此开始在博客园记录的同时也与各位同行分享知识. 正题 关于IOC,在刚工作时就 ...
- yii2之依赖注入与依赖注入容器
一.为什么需要依赖注入 首先我们先不管什么是依赖注入,先来分析一下没有使用依赖注入会有什么样的结果.假设我们有一个gmail邮件服务类GMail,然后有另一个类User,User类需要使用发邮件的功能 ...
- 聊聊pthread_cond_wait的虚假唤醒
使用条件变量时,仅仅从pthread_cond_wait返回就说条件成立是不恰当的.我们正确使用pthread_cond_wait的唯一方式是当线程被从pthread_cond_wait唤醒时,再检查 ...
- 28款GitHub最流行的开源机器学习项目
现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.DNA序列测序.语音和手写识别.战略游戏和 ...
- Python Web框架篇:Django文件上传
上传方式: - Form表单上传文件 - Ajax上传文件 - 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及 ...
- Winsock网络编程笔记(3)----基于UDP的server和client
在上一篇随笔中,对Winsock中基于tcp面向连接的Server和Client通信进行了说明,但是,Winsock中,Server和Client间还可以通过无连接通信,也就是采用UDP协议.. 因此 ...