- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于JVM的Java应用集群解决方案.doc
Terrocotta - 基于JVM的Java应用集群解决方案
前言
越来越多的企业关键应用都必须采用集群技术,实现负载均衡(Load Balancing)、容错(Fault Tolerance)和灾难恢复(Failover)。以达到系统可用性(High Availability)和可伸缩性(Scalability)的要求。
关于J2EE集群技术的基本原理和常用实现方式,TheServerS有一篇经典的文章:/tt/articles/article.tss?l=J2EEClustering
CSDN上,陶建风先生在他的博客中也作了翻译:/ESoftWind/archive/2006/10/19/1341089.aspx
这篇文章虽然发表于2005年,但它对集群技术的概念、原理和实现的基本描述至今依然适用。刚刚接触集群技术的朋友不妨阅读一下这篇文章,以便掌握集群技术的基本知识。我写这篇文章是想介绍一个新的Java集群技术,Terracotta。它采用了与众不同的手段,解决了传统集群技术面临的一些关键问题。可以说为Java集群技术的实现吹来了一股新鲜的空气。Terracotta(/)是一个开源的框架。他的创始人Ari Zilka原本是W的首席架构师。他于2003年成立Terracotta公司,并且将产品开源。该产品在2006年左右趋于成熟,在很多财富500强企业获得成功应用。2009年Terracotta在该年度的JavaOne会议中获得Duke奖,并由Java创始人James Gosling先生亲自把该奖颁发给了Ari Zilka先生。本文着重介绍Terracotta技术的基本原理,尤其是它与其它集群技术的根本区别之处。然后会用一个简单的例子说明Terracotta的基本使用方式。在以后的文章里,我会陆续详细介绍Terrocotta的不同应用场景和技巧。
基本原理
Terracotta最大的特点是它使用Java二进制代码增强的方式(binary code injection)截获集群节点对数据的修改和获取的请求,利用单独的Terracotta服务器调配数据的流向,以达到最高的网络效率。这两点可以说是与传统集群技术采用的序列化和网络广播机制在实现思路上的根本不同。另外从开发人员角度来说,Teraccotta隐藏在Java API之后,开发人员不需要学习新的API。只需要使用标准的JDK数据结构(java.util.*, java.concurent.*等)、内置Java协同、加锁机制(synchronized, object.wait, object.notify等)开发代码,在Terracotta平台之上就可以把单机基于POJO的应用扩展到多机集群上。因此开发人员的学习曲线很短。Terracotta集群方案由两部分组成:Terracotta驱动器和Terracotta服务器: 其中驱动器部分(也称为Terracotta客户端)与应用程序执行在相同的JVM中。实际上应用程序是由Terracotta驱动器载入到内存中的。载入的同时,会对Java二进制代码进行增强。用户提供Terracotta配置文件指定本地程序中哪些数据需要在集群中共享。这样Terracotta就可以通过增强的代码截获对这些共享数据的读写请求,并且与Terracotta服务器协作,实现共享数据在集群中的一致性。对于Java代码中使用的“锁”也是利用相同的机制实现全局协同;Terracotta服务器则首先记录所有节点对共享数据和锁的访问信息,为读取数据的节点提供最新数据,把修改的数据通知给正在使用中这些数据的节点等等。服务器除了协调节点间数据的获取和变化通知以外,还利用其本地内存和硬盘实现共享数据的缓存和持久化。由于Terracotta驱动器和服务器都有缓存数据的能力,有时我们也称Terracotta驱动器为一级缓存L1,服务器为二级缓存L2。Terracotta这一体系架构跟其它集群解决方案相比,有如下几点好处:1、避免Java序列化,只把被修改的字段的数据传递给服务器和使用节点,大大减少CPU和内存消耗;2、避免数据的广播,只把修改的数据通知给正在使用该数据的节点,大大降低了网络流量;3、利用服务器实现网络扩展内存,使得有限内存的客户端节点可以访问远大于其内存容量的数据结构,而不必担心发生内存逸出的异常;4、通过服务器实现共享数据持久化,通过服务器集群实现容错性等等5、无须学习新的API,大大降低开发成本企业版的Terracotta服务器还提供了数据分片(striping)的功能,使得集群吞吐量随着Terracotta服务器数量的增加达到线性增长。
Terracotta插件
在核心产品的基础上,Terracott
您可能关注的文档
- 图书馆信息资源质量的调查报告.doc
- 图书馆管理信息系统需求分析报告.doc
- 图像信号处理实验指导书.doc
- 图像分割算法的比较与分析.doc
- 图像压缩(JPEG)编码算法及压缩过程的实现.doc
- 图像处理(中英文).doc
- 图像处理图像增强(一).doc
- 图像处理常用网址.doc
- 图像融合技术的发展及未来展望.doc
- 图像识别与人工智能研究所发展规划.doc
- 文明家庭创建活动实施纲要.pptx
- 2021-2022学年湖北省黄冈市蕲春县高二上学期期中考试历史试题 word版.doc
- 2021-2022学年陕西省西安市长安区第一中学高二上学期期中考试历史(文)试题(Word版).doc
- 2021-2022学年吉林省通化市辉南县一中高二上学期第三次月考语文试题.docx
- 2021-2022学年河南省洛阳市创新发展联盟高二上学期第二次联考语文试题.docx
- 2021-2022学年云南省昭通市永善、绥江县高二12月月考语文试题.docx
- 优秀家居软装设计案例.pptx
- 文字编辑中的流程图插入方法.pptx
- 小学生安全教育《身体红绿灯》.pptx
- 足球漫画美术课件.pptx
文档评论(0)