Terracotta2
高效、高可用的Web Session解决方案
在多用户、高并发、高吞吐量的Web应用中,用户经常通过配置多个Web应用服务器并发处理大量用户的请求,实现负载均衡、灾难回复,提高可用性和可扩展性。
在多节点的环境中,如何实现Web Session数据的高速共享、复制、迁移是架构成功与否的关键。
由于大多数Web应用服务器都采用Java序列化和数据广播方式实现session数据的共享,导致任何一个节点对任何session数据进行修改,都造成大量的内存、CPU以及网络带宽的消耗。这种消耗随着应用服务器节点的增加而成级数级增长。当节点数目超过4个以上的时候,经常由于session复制导致的消耗过高,使得整个集群的吞吐量反而开始下降。由于普通session复制机制性能和可用性的缺陷,很多web开发人员不得不通过数据保存和共享session相关的数据,因此又增加了对数据库的压力,形成新的性能瓶颈。
Terracotta的web session方案利用Terracotta集群实现sessino数据的共享。不使用广播机制,也不对整个session数据做序列化,因此session数据复制的消耗极小,允许用户横向扩展应用服务器的数量儿不必担心系统消耗形成的瓶颈。
下图是基于Terracotta的Web Session集群方案的体系架构图:
Web Session数据通过Terracotta服务器实现了数据的持久化、节点间的复制以及灾难回复等。
基于Terracotta的解决方案的特点及优势包括:
- 简单易用
- 完全支持Java Web Session的标准实现,用户对HttpServletSession接口的访问方式不变
- Terracotta通过对不同应用服务器进行配置,将session数据集群化
- 高效、可靠
- 近乎内存读写的访问速度
- session数据自动持久化
- 性能可线性扩展
- 强大、灵活
- 广泛支持各种应用服务器:WebLogic, WebSphere, Tomcat, JBoss, Jetty, Geronimo等等
- 自动session数据迁移
- 适用于各种大小的session数据
- 集群范围内数据可视以及强大的管理和监控功能
下图显示了基于Terracotta的Session集群解决方案与Tomcat内置解决方案的性能数据对比:
从图中可见,Tomcat内置的方案在增加节点数,对整个集群的吞吐量帮助不大。而基于Terracotta的方案可以实现吞吐量随着节点数的增加而线性增长。
Terracotta的Web Session解决方案建议用户使用session粘性负载均衡机制,让相同用户的请求尽量由相同的web服务器处理,这样可以最大限度地做到数据本地化分片,实现最佳的整体性能。同时在灾难发生的时候,还能实现web请求和session的自动迁移。
高效分布式Java任务调度平台 - Quartz
Quartz是Java领域最著名的开源Java任务调度工具。它允许用户通过类似Unix上crontab类似的任务计划语法定义对Java任务的调度计划。
Terracotta于2009年末并购了Quartz项目,并将它与Terracotta核心平台进行紧密整合,为用户提供一个可以从小量任务、单机环境到大量任务、分布式环境平滑过度的全面的Java任务调度平台。
与其他Terracotta解决方案一样,用户可以从单机环境开始开发实施,随着应用需求和环境的升级扩展,只需要修改配置文件,就可以逐步扩展到多机集群环境。
下图是Quartz与Terracotta整合后的系统架构:
Terracotta Quartz解决方案的特点包括:
- 简单易用
- 功能特点
- 任务调度
- 任务执行
- 任务持久化
- 任务数据可视化监控管理
- 强大、灵活
- 任务数据持久化选项:数据库、Terrcotta
- 支持任务监听和插件扩展
部署、监控、维护
服务器与客户端的部署
Terracotta的部署非常简单。
Terracotta服务器是独立运行的Java程序。用户只需要指定JDK的安装目录,设置配置文件,然后就可以在相应的硬件服务器或者虚拟机中启动Terracotta服务器的各个实例了。Teracotta服务器目前要求使用Sun JDK 1.5或1.6。
对于客户端来说,如果使用快捷模式(Express Mode),除了拷贝相应的jar文件,进行应用相关的配置意外,不需要做其它特殊的操作。
使用快捷模式功能的详细手册可以参考:
http://www.terracotta.org/documentation/ga/product-documentation
使用DSO模式,或者订制模式(Customized Mode)需要为客户端配置相应的tc-config.xml,指定要共享的类,共享实例以及使用的插件(TIM)等等,然后用dso-java.sh(bat)或者ds-env.sh(bat)启动。
DSO模式的运行手册可以参考:
http://www.terracotta.org/documentation/ga/product-documentation-19.html#403067640_pgfId-1006124
监控、维护
Terracotta提供了丰富的监控及维护功能。
首先,Terracotta提供JMX API,允许用户使用该工业标准访问服务器集群以及客户端的信息,查看集群各种配置信息、监控软硬件指标、获取统计数据、动态修改集群属性甚至进行关机、备份等管理操作。用户可以选择将JMX接口嵌入到其企业使用的监控平台中,也可以自行开发基于JMX的Java程序,以满足其特定的监控和管理需求。
目前市场上大部分开源或者商业系统监控平台,比如Nagios、HP OpenView、CA Unicenter等等,都直接支持JMX标准。
Terracotta利用JMX API提供了一系列内置的工具,方便用户对Terracotta集群进行监控、维护。
比如:
- Developer Console
专门为开发人员提供的集群监控、调试、管理工具。允许用户查看集群的拓扑信息、查看集群中共享的数据、获取统计信息、查看CPU、Heap使用情况、获取线程堆栈试视图(thread dump)、收集调试信息等等。对于Ehcache和Hibernate用户,还可以监控缓存的使用情况,调整缓存配置等等。
Developer Console的相信说明可以参考:
http://www.terracotta.org/documentation/ga/product-documentation-21.html#404563920_pgfId-1167627
- Operation Center
为集群管理人员提供专用的管理工具。可以用来监控各个服务器以及客户端的CPU、Heap使用情况、备份共享数据、关闭服务器或者客户端程序等等。
Operation Center详细信息可以参考:
http://www.terracotta.org/confluence/display/docs/Terracotta%20Operations%20Center
- 命令行工具
Terracotta提供一系列命令行脚本,用于获取集群状态、采集统计信息、终止服务器等操作。具体说明请参考:
http://www.terracotta.org/documentation/ga/product-documentation-22.html#403159784_pgfId-1080523
用户可以根据自身开发、部署、测试、维护的需要选择不同的工具,解决不同的问题。
下面是Terracotta Developer Console的几个截图。
共享对象浏览器
实时性能数据表盘
集群拓扑信息
Terracotta核心技术介绍以及如何搭建高可用的Web应用
http://terracottawebinar201006.eventbrite.com/
分布式缓存Ehcache以及如何提高应用系统性能
http://terracottawebinar201007.eventbrite.com/
Terracotta2的更多相关文章
- Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package
Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package 1. 统计的lib jar 列表1 2. Code3 3. 常用包名按找字母排序(2000个)4 ...
- 定制bash命令提示符
使用shell时经常要知道当前路径,如果将它写在提示符里很节省很多敲pwd的动作,方法是在启动文件(.bash_profile, .bashrc)里加上: export PS1="[\u@\ ...
随机推荐
- AJAX的JSON方式传回方法
AJAX返回数据的类型有两种,一种是TEXT类型,一种是JSON类型. 使用TEXT类型,访问数据库后将结果拼接成字符串,返回时在拆分成数组使用. JSON直接将结果转成JSON数据,返回时直接使用. ...
- azure 创建redhat镜像帮助
为 Azure 准备基于 Red Hat 的虚拟机 从 Hyper-V 管理器准备基于 Red Hat 的虚拟机 先决条件 本部分假定你已经从 Red Hat 网站获取 ISO 文件并将 RHEL 映 ...
- shell中的-z
-z 字符串为"null",即是指字符串长度为零.
- 中国区 Azure 和全球版 Azure:功能对比
由世纪互联运营的 Microsoft Azure(文中简称为中国区 Azure)是在中国大陆独立运营的公有云平台,与全球其他地区由微软运营的 Azure (文中简称全球版 Azure)服务在物理上和逻 ...
- POJ 3162 Walking Race (树的直径,单调队列)
题意:给定一棵带边权的n个节点的树,首先要求出每个点的最长路,然后写成序列d[1],d[2]...d[n],然后求满足 区间最大值-区间最小值<=k 的最大区间长度为多少? 思路: 分两步进行: ...
- 精仿百思不得姐客户端应用iOS源码
XFBaiSiBuDeJie 高仿百思不得姐客户端 初次学习使用RAC,还不是怎么熟悉,使用的仍是MVC模式,MVVM还在摸索中... 如果大家觉得还不错,请给颗星星支持下~~~ 程序中使用到的库 A ...
- java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
6.2 接口实例 6.2.1 接口与回调 在java.swing包中有一个Timer类,可以使用它在到达给定的时间间隔时发出通告,假如程序中有一个时钟,就可以请求每秒钟获得一个通告,以便更新时钟的表盘 ...
- (五)使用Docker镜像(上)
1. 获取镜像 # 获取镜像 docker pull image:tag // 不使用tag 默认下载latest标签的镜像,即最新的镜像. 2. 查看镜像信息 # 查看镜像信息docker imag ...
- WPF中播放视频音频
首先要在WPF中播放视频和音频,我们就需要用到MediaElement控件,下面我们示例播放音频和视频. 用MediaElement播放音频: 第一步:将你需要播放的音频(mp3)放在你WPF项目的D ...
- ios之UIWebView(1)
UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦.是不是觉得很棒呢?废话少说,切入正题. 一.创建UIWebView [java] view plain ...