开源的 JVM 堆级群集 / 复制解决方案 Terracotta 于五月初发布了 2.3 版本,增加了基于 TCP/IP 的活动 / 备用服务器故障转移能力,群集成员事件通知,和新的预配置模块,用于快速群集 Tomcat、Weblogic、Spring、Lucene、RIFE、Struts 1、Cglib 和 iBatis。Jetty 的建立者正在构造群集的Ajax cometd 应用,Wicket 的领导者正在群集Wicket ,他们都在使用Terracotta。 RIFE 的主要开发者 Geert Bevin 最近也被 Terracotta 招致旗下。有风投支持的 Terracott a 在去年 12 月以基于 MPL 的协议开放了源码。InfoQ 对 Terracotta 的 CTO Ari Zilka 和产品运营副总 Jeff Hartley 做了采访。据 Ari 说 Terracotta 每月约有 5000 下载量。
Terracotta 使用了星型(hub and spoke)架构,由中央服务器协调 JVM 间内存堆的改动,给每个需要的节点推送属性级的变动。在 2.3 版之前 Terracotta 的 Hub 使用共享硬盘(一个群集的 NFS 或者 SAN)来实现活动 / 备用的群集故障容错方案,这样做的代价是高昂的。在 2.3 版中,Terracotta 可以基于多播在集中服务器之间点对点地实现群集(实际应用服务器上的一个独立层被 Terracotta 群集)。Ari Zilka 解释说:
“以前,备用服务器将启动并试图获取活动服务器在崩溃前一直持有的文件锁,并接手文件锁的持有。你甚至可以以任意顺序将备用服务器串联起来。在 2.3 中,活动 / 备用服务器的定义将不再根据谁先启动并获得文件锁,它将基于 Terracotta Server 间的 P2P 的投票。谁被选举为活动服务器,将把应用服务器层发来的内容群发到其它服务器上。它们都有着对方的心跳检测,如果一台活动服务器停止了,其它服务器会投票选出新的活动服务器。”
2.3 版另一个值得注意的技术点是群集成员通知。据 Jeff Hartley 说:“当一个节点离开或加入集群,开发人员可以使用这个消息,比如在网格计算中的配置。”Ari 继续说:“我们的用户之前要运行 Terracotta DSO 获得集群能力,然后运行 JGroups 来获得成员关系事件,现在可以停止使用 JGroups 而使用单纯的 Terracotta 了。”
Terracotta 2.3 还改变了与其它流行框架的集成方法。相比之前为每个框架发行独立的版本,现在单个的 Terracotta 下载版包含了“预配置模块”,提供对 Spring、Tomcat、Weblogic 的预配置的定制化,2.3 版还新增了 Lucene、RIFE、Struts、Cglib、iBatis 的预配置群集能力。对 JBoss 现在也有了正式支持。
Ari 还解释了 Terracotta 与其他群集解决方案的比较:
我们真正引入的是 Terracotta 为 JVM 注入高可用性的的能力,使得多个物理的 JVM 看起来像一个或多个逻辑 JVM。即使一台机器或一个 JVM 实体失效,你也不会丢失它正在运行的任何东西,因为其他的 JVM 可以无缝地获得失效者的工作内容。我们在非常高的级别上提供了高可用性,而不是在合理的可用性保证要求下伸缩的可用性。
未来版本的 Terracotta 会包含对 Glassfish、Wicket 和其他框架的集成。活动 - 活动的故障转移策略(有多个活动的 Hub 服务器)也会在今年稍后开始研发。请参阅 Infoq 权威的 Introduction to Terracotta ,还有 Spring Webflow with Terracotta 。
查看英文原文: Terracotta improves failover support, adds clustering for 5 more frameworks
译者简介:肖桦,网名“江南白衣”,开源JavaEE 项目 SpringSide 发起人,现任广州电信研究院亿迅科技有限公司任设计中心设计主管。为 InfoQ 中文站贡献内容,请邮件至 china-editorial[at]infoq.com 。
评论