a centerless message oriented middleware
xbus是一个无中心节点的消息中间件。他有下面的几个特点:
-
不是存储转发模型的消息中间件。一般的消息中间件发送者将消息发送到消息服务器,消息服务器将消息存储到消息队列,消息接收者订阅不同的消息队列来接收消息。这样就存在一个单一故障点——消息服务器。同时,消息服务器管理消息的订阅关系(消息队列)。这样的模型有下面的几个问题: 1.1 消息是存储转发模型,发送者、接收者和消息服务器组成星型网络,消息服务器往往成为系统的瓶颈。 1.2 消息服务器会变成系统的单一故障点。 1.3 消息经过存储转发,会增加消息的时延。
-
xbus中每个实体集成了自发现模块,能够自动发现每个模块的接入和退出,不需要特别的维护和管理。同时,可以在网络中部署一个自发现代理模块,用于处理跨越多个网段(例如跨越互联网的问题)。
-
xbus可以将一个tcp网络划分为多个xbus子网,不同的子网之间互相没有任何关联,不会互相影响。
-
xbus是一个点对点的通讯中间件。发送者和接收者之间建立直接的tcp连接,不需要消息服务器进行转发,可以降低消息的时延,增加发送者和接收者之间的带宽。当跨越多个网段时,可以部署转发代理模块,用于网段之间的消息转发。
-
发送者和接收者之间支持N+1备份。接收者在订阅消息时,可以指定消息的优先级,当高优先级的模块意外退出时,发送者将自动将消息发送到订阅相同主题的低优先级的接收者,实现N+1备份。
-
消息的订阅关系支持正则表达式。正则表达式只需要在模块上线时计算一次,不用每次发送消息时重复计算,降低了CPU的利用率。