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

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

        下面是这两个监听器的接口,从接口定义的方法可以很清晰地看到各个方法被调用的时机,MembershipListener类型中memberadd是有成员加入时调用的方法,memberDisappeared是成员退出时调用的方法,ChannelListener类型中accept用于判断是否接受消息,messageReceived用于对消息处理的方法,应用层把逻辑分别写到这几个方法就可以在对应时刻执行相应的逻辑。

public interface MembershipListener {

    public void memberAdded(Member member);

    public void memberDisappeared(Member member);

}

public interface ChannelListener {

    public void messageReceived(Serializable msg, Member sender);

    public boolean accept(Serializable msg, Member sender);

}

 

        我们可以在应用层自定义若干监听器并且添加到GroupChannel中的两个监听器列表中,GroupChannel其实可以看成是一个封装了IO层的抽象容器,它会在各个适当的时期遍历监听器列表中的所有监听器并调用监听器对应的方法,即执行应用层定义的业务逻辑,至此完成了数据从IO层流向应用层并完成处理。两种类型的监听器给应用层提供了处理入口,应用层只需关注逻辑处理,而其他的IO操作则交由IO层,这两层通过监听器模式串联起来,优雅地将模块解耦。

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

时间: 2024-12-01 08:50:25

集群通信组件tribes之应用程序处理入口的相关文章

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

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

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

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

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

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

windows 集群服务器管理 定时重启应用程序

问题描述 windows 集群服务器管理 定时重启应用程序 Web 应用程序部署在集群上,做主备双机使用,现在遇到了点麻烦,需要定时重启应用程序. 应用程序现在在集群管理器的活动资源里面, 所有者属于集群,组属于集群组,资源类型属于通用服务. 麻烦帮下忙,我想定时重启一下 通用服务

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

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

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

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

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

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

集群RPC通信

        RPC即远程过程调用,它的提出旨在消除通信细节.屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络.硬件.系统的异构复杂环境.         先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用, ①先将待传递的数据放到NIO集群通信框架(这里使用的是tribes框架)中: ②由于使用的是NIO模式,线程无需阻塞直接返回: ③由于与集群其他节点通信需要花销若干时间,为了提高CPU使用率当前线程应该放

HeartBeat 集群组件概述

Heartbeat 是一个基于Linux开源的高可用集群系统.主要包括心跳服务和资源接管两个高可用集群组件.心跳监测服务可以通过网络链路和串口进行,而且支持冗余链路, 它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务.本文简要描述了heartbeat v2集群架构组件及其相关概念,供大家参考. 一.高可用集群的特点 高可用服务 通常使用集群方式实现,这也是集群的最大作用和体现. 其