集群通信组件tribes之集群的消息接收通道

与消息发送通道对应,发送的消息需要一个接收端接收消息,它就是ChannelReceiver。接收端负责接收处理其他节点从消息发送通道发送过来的消息,实际情况如图每个节点都有一个ChannelSender和ChannelReceiver,ChannelSender向其他节点的ChannelReceiver发送消息。本质是每个节点暴露一个端口作为服务端监听客户端,而每个节点又充当客户端连接其他节点的服务端,所以ChannelSender就是充当客户端的集合,ChannelReceiver充当服务端。

 

    集群消息复制过程中,每个节点ChannelReceiver负责接收来自其他节点的消息,假设一个n节点的集群,一般情况下每个ChannelReceiver对应n-1个连接,因为集群之间的通信连接都是长连接,长连接有助于提高通信效率,如下图,4个节点的集群,node1的ChannelReceiver的客户端连接数为3,分别是node2、node3、node4三个节点作为客户端发起的socket连接。这三个节点产生的数据会通过此通道同步到node1节点,同样地,node2的ChannelReceiver拥有node1、node3、node4的客户端连接,这三个节点产生的数据也会同步到node2节点。Node3、node4也拥有三个客户端连接。为提高处理效率,此处还是使用NIO处理模型。

 

    除此之外,再接收操作中为了优化性能采取了很多措施,例如引入任务池,即是把接收任务提前定义好放入内存中,接收时可直接获取使用而不用再实例化;例如一次获取若干个报文进行处理,即使用nio模式读取消息到缓冲区后直接处理整个缓冲区的消息,它可能包含若干个报文;网络IO需要优化的地方及手段都比较多,tribes确实已经做了很多优化方面的工作。

点击订购作者《Tomcat内核设计剖析》

时间: 2024-09-12 15:44:55

集群通信组件tribes之集群的消息接收通道的相关文章

集群通信组件tribes之集群的平行通信

前面的集群成员维护服务为我们提供了集群内所有成员的地址端口等信息,可以通过MembershipService可以轻易从节点本地的成员列表获取集群所有的成员信息,有了这些成员信息后就可以使用可靠的TCP/IP协议进行通信了.这节讨论的正是实际中真正用于消息传送通道的相关机制及实现细节. 如下图,四个节点本地都拥有了一张集群成员的信息列表,这时节点1有这么一个需求:为了保证数据的安全可靠,在往自己的内存存放一份数据的同时还要同步到其他三个节点的内存中.节点1有一个专门负责发送的组件ChannelSe

集群通信组件tribes之使用方法

上面已经对tribes的内部实现机制及原理进行了深入的剖析,在理解它的设计原理后看看如何使用tribes,整个使用相当简单便捷,只需要四步: ① 定义一个消息对象,由于这个消息对象是要在网络之间传递的,网络传输涉及到序列化,所以需要实现Serializable接口. public class MyMessage implements Serializable { private String message; public String getMessage() { return message

集群通信组件tribes之应用程序处理入口

        Tribes为了更清晰更好地划分职责,它被设计成用IO层和应用层,IO层专心负责网络传输方面的逻辑处理,把接收到的数据往应用层传送,当然应用层发送的数据也是通过此IO层发送,数据传往应用层后必须要留一些处理入口供应用层进行逻辑处理,而考虑系统解耦,这个入口最好的方式是使用监听器模式,在底层发生各种事件时触发所有安装好的监听器,使之执行监听器里面的处理逻辑.这些事件主要包含了集群成员的加入和退出.消息报文接收完毕等信息,所以整个消息流转过程被分成两类监听器,一类是跟集群成员的变化相

使用E-MapReduce集群sqoop组件同步云外Oracle数据库数据到集群hive

E-MapReduce集群sqoop组件可以同步数据库的数据到集群里,不同的数据库源网络配置有一些差异网络配置.最常用的场景是从rds mysql同步数据,最近也有用户询问如何同步云外专有Oracle数据库数据到hive.云外专有数据库需要集群所有节点通过公网访问,要创建VPC网络,使用VPC网络创建集群,给集群各节点绑定动态ip,检查网络链路,Oracle数据库还上传oracle jdbc jar.本文会详细介绍具体的操作步骤. 创建vpc专有网络集群 如果没创建过VPC专有网络和子网交换机,

Airbus TETRA集群通信助力大西北城市地铁运营

近日,空中客车防务与空间公司(Airbus Defence and Space)--欧洲最大的TETRA数字集群通信系统和设备提供商,连续签订合同为兰州地铁1号线.乌鲁木齐地铁1号线提供TETRA无线集群通信系统(即专用无线通信系统),共包含3个DXT交换机.45个TB3基站.约1000个终端等TETRA设备和服务,助力我国西北两大省会城市进入网络运营时代. 空中客车防务与空间公司为轨道交通行业提供的800兆TETRA无线通信系统已广泛应用于全球轨道交通行业,具有高稳定性.高可靠性以及行业的高度

共网发展将成宽带集群通信必由之路

在日前某场合,B-TrunC产业联盟副秘书长辛伟表示,LTE已经成为宽带集群通信的发展方向,包括美国.韩国.加拿大等多个国家都已经开始将LTE引入到公共安全政府专网中.我国也已经开始这方面的试点部署工作,在北京.天津.南京.上海等多个城市开展了1.4G政务专网的工作. 在辛伟看来,虽然需求已经产生而且还相当迫切,但LTE宽带集群发展还是面临着很多挑战. 最大的挑战来自于技术标准与体制,LTE宽带集群现在是多种方案并存,标准不统一带来很多的问题:比如成本的居高不下,因为专网市场跟公网的市场相比不是

高可用集群HA及负载均衡集群LB的实现方法

集群是个热门话题,在企业中越来越多地应用Linux操作系统提供邮件.Web.文件存储.数据库等服务,随着Linux应用的日益增长,高可用及http://www.aliyun.com/zixun/aggregation/13996.html">负载均衡Linux集群也在企业中逐步地发展起来.Linux平台的低成本.高性能.高扩展性使得Linux集群能够以低廉的价格很好地满足各种应用的需求. 本文介绍Linux集群的基础知识,集群的分类.在熟悉集群的基础知识后会以RHCS(RedHat Clu

管理节点 mysql集群-mysq集群维护问题,搭建集群需要注意的情况

问题描述 mysq集群维护问题,搭建集群需要注意的情况 管理节点作用,数据节点能不能直接插入数据:在其中一个节点当机的时候,如何使集群不受影响 解决方案 http://server.it168.com/a2009/1019/767/000000767215.shtml无非就是配置一个容错的群集 解决方案二: http://blog.csdn.net/wzy0623/article/details/6554274

代码-vsphere api 在vcenter上有多个集群,需要克隆的模版在一个集群上,怎么指定集群

问题描述 vsphere api 在vcenter上有多个集群,需要克隆的模版在一个集群上,怎么指定集群 公司现在有个需求,需要通过模版克隆虚拟机,在一个集群中通过API克隆没有问题,换了一个环境有两个集群,用原来的代码报错说指定的参数错误.在clone的配置中没有找到集群相关参数,求大神指导 解决方案 什么是集群