InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Filip Hanik谈利用Apache Tribes实现异构集群通信

作者 Srini Penchikala 译者 宋玮 发布于 2009年2月12日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
Java ,
集群与缓存 ,
消息传送
标签
Tomcat

Apache Tribes是Tomcat的一个模块,支持服务器集群中的组通信。Filip Hanik谈到了异构集群中的挑战以及Tribes如何帮助实现Tomcat集群的组通信需求。他在SpringOne美国大会做了一场关于Tribes消息框架的专题讲座

讲座一开始,Filip谈到几个开源的组通信项目,包括AppiaSpreadErlangJGroups。他讨论了统一组模型,在该模型里集群中的所有节点都是一样的,它们以同样的方式处理、发送、接收消息. 许多组通信模块都是为一个统一的通信模型建立的。但是在大多数异构集群实现中,这通常都不是达到集群所需性能和可扩展性的最佳解决方案。

当集群每个节点上的处理等是动态的且运行异构硬件环境中,那么一个非统一组通信模式是个更好的解决方案。

Tribes是一个具有组通信能力的消息传递框架,这些是在Tomcat 5容器的集群/session复制代码之外创建的。它是为Tamcat集群实现提供的通信框架。它的目的之一是简化分布式应用点对点(peer-to-peer)及点对组(peer-to-group)通信。Tribes支持两种类型的消息传递:可用于两个节点间事件的并发(concurrent)消息传递和可用于发送消息给多个节点的平行(parallel)消息传递。

Tribes框架的其它特性包括:

  • 有保证的消息传递:默认实现是基于TCP的,使用了java.iojava.nio包。
  • 保证级别:Tribes支持3个级别的消息传递保证(NO_ACK、ACK和SYNC_ACK)。
  • 每消息传递语义:这些语义允许被传递的每个消息都是不同的,而且每个消息使用不同的保证级别。
  • 可插拔拦截器:可被用来拦截贯穿已定义方法的任何事件并操作消息属性(标记)。ChannelInterceptorBase类可以把非拦截方法的冗余代码降至最少。
  • 传递反馈:Tribes试图对每个消息和每个传递语义(NO_ACK、ACK、SYNC_ACK)都传递反馈。消息传递既可以是同步的也可以是异步的。
  • 并发和平行传递:并发传递意味着任一时刻可以发送或接收多于一个的消息。没有“消息阻塞”意味着使用SYNC_ACK保证级别传递10M消息不会中断使用NO_ACK保证级别传递的10KB信息。平行传递则允许一个线程发送消息给多个目的地(NIO)。
  • 固定的节点层级:这一特性支持确定集群领导、自动合并组以及在多点传送不工作的地方发现节点。
  • 失败检测:包括一个简单的拦截器TcpFailureDetector以在一个集群成员宕机时提供反馈。这样就不需要等待超时而且也没有在繁忙网络上ping节点时上当受骗的风险。

Tribes还支持像RPC消息传递的特性以及把通道构建到JNDI树中的JNDI通道。该框架架构包含如下组件:

  • 通道:这是链中的第一个拦截器。它有一个或多个ChannelListenerMembershipListener. 它把消息序列化并反序列化,而且支持传递纯byte[]数据的ByteMessage
  • 拦截器:拦截器的例子包括有失败检测/静态成员、总体顺序或每个成员顺序、领导选举/消息数据加密、消息分派(异步消息传递),以及所有或没有传递担保(delivery guarantee)。
  • 协调器:这是链中的最后一个拦截器。它协调I/O组件如Sender, Receiver和Membership。

在这一专题讲座中,Filip还示范了一个简单的例子应用,展示了如何实现Tomcat集群并激活针对session和上下文属性复制的Webapp配置选项。server.xml文件包括了对集群元素的配置,比如Cluster, Session Manager(DeltaManager或BackupManager)、Channel(Tribes)、Membership(支持两种成员:使用多点传送在运行时发现其它节点的动态成员和每个节点在server.xml定义的静态成员)、Messaging(基于TCP,每个节点都有一个接收者和一个发送者)、Receiver(接收集群消息)、Sender(发送集群消息)、Interceptors(在功能方面类似于valves)、Valves(在每个请求结束时初始化session复制)、以及ClusterListener(支持特定类型消息的自定义消息传递listener)。

查看英文原文:Filip Hanik on Heterogeneous Cluster Communication Using Apache Tribes

译者 宋玮 有多年软件开发经验,长期担任技术管理和项目管理工作,一直关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。

关注使用它实现Tomcat集群 发表人 xiao deshi 发表于
  1. 返回顶部

    关注使用它实现Tomcat集群

    发表人 xiao deshi

    Tomcat本身的Cluster方案,并不理想.使用异构的集群通信,让我开了眼界.支持一下.

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。