基于RabbitMQ的分布式消息发布系统的制作方法

文档序号:14776354发布日期:2018-06-23 03:27阅读:764来源:国知局

本发明涉及分布式技术领域,尤其涉及基于RabbitMQ的分布式消息发布系统。



背景技术:

电信运营商的多个系统间常常需要进行数据和消息的传输,但系统间的耦合度过高不利于系统的稳定、高效和健壮,需要采用异步通信的方式来解耦并降低系统的风险。传统的单机版消息中间件在扩展性及高可用方面存在障碍,如消息服务器挂机则相关的系统均受影响。在高并发、大压力的情况下,单机的性能无法支撑。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供基于RabbitMQ的分布式消息发布系统。降低了分布式消息系统安装及运维的复杂度,实现了在线扩缩容、集群水平扩展、负载均衡、集群高可用、安全隔离的特性,增强了消息收发的可靠性。

本发明采用的技术方案是:

基于RabbitMQ的分布式消息发布系统,其包括管理平台模块、数据节点模块和客户端模块;

管理平台模块包括平台前端和平台后台程序集群,平台前端连接平台后台程序集群,平台后台程序集群通过内置事件总线维持元数据的一致;平台后台程序集群与数据节点和客户端通讯连接,客户端连接数据节点;数据节点具有多个分组,每个分组包括多个VBroker,每个VBroker包括一个Broker或者一对Broker镜像;

管理平台模块集成数据节点的自动部署、队列/广播的维护以及数据节点的状态监控,客户端模块通过管理平台模块获取数据节点的集群配置信息,并将请求均匀发至数据节点,数据节点用于消息的收发处理。

进一步地,管理平台模块的自动部署具体为在平台前端一键完成Erlang环境安装、配置文件修改及RabbitMQ部署的操作。

进一步地,管理平台模块的队列/广播的维护功能提供三种方式的广播:匿名方式、持久化方式和扩展通配方式。

进一步地,管理平台模块的队列/广播的维护功能在广播前将一个消费ID绑定到TOPIC上并由后台程序创建一用于消息收发的物理队列。

进一步地,管理平台模块对数据节点的状态监控具体为管理平台模块定期采集数据节点的运行状态,并在出现异常情况时发出告警,如有数据节点异常关闭则自动拉起。

进一步地,客户端模块内置路由策略,客户端模块通过路由策略将请求均匀地分发到分组内的各个数据节点上。

进一步地,客户端模块内置故障数据节点的隔离和重试功能。

本发明采用以上技术方案,管理平台模块创建实际队列用于广播消息收发,避免客户端闪断窗口内消息丢失,并提供三种广播方式实现:匿名方式、持久化方式、扩展通配方式,以适应不同业务需要。数据节点采用分组(Group)管理,从而实现分组间数据的安全隔离;每个分组内设多个镜像集群(VBroker),达到负载均衡;且分组结构具有高可用性,分组内部分节点出现故障不影响应用;分组结构便于在线扩缩容,扩缩容过程应用无感知无需停机。客户端在初始化时客户端模块通过管理平台获取到集群的配置信息,并通过路由策略使消息均匀地分发到分组的各个VBroker上,从而实现负载均衡。对发生故障的VBroker,客户端内置实现了故障节点的隔离和重试,确保系统的高可用。

本发明提供了一个简单、易用、可靠的分布式消息平台。本发明降低了分布式消息系统安装及运维的复杂度,实现了在线扩缩容、集群水平扩展、负载均衡、集群高可用、安全隔离的特性,增强了消息收发的可靠性。

附图说明

以下结合附图和具体实施方式对本发明做进一步详细说明;

图1为本发明基于RabbitMQ的分布式消息发布系统的结构示意图。

具体实施方式

如图1所示,本发明公开了基于RabbitMQ的分布式消息发布系统,其包括管理平台模块、数据节点模块和客户端模块。

管理平台模块包括平台前端和平台后台程序集群,平台前端连接平台后台程序集群,平台后台程序集群内置事件总线,多个平台后台程序通过事件总线维持元数据的一致。平台后台程序集群与数据节点和客户端通讯连接,客户端连接数据节点。数据节点具有多个分组,每个分组包括多个VBroker,每个VBroker包括一个Broker或者一对Broker镜像。

管理平台模块集成数据节点的自动部署、队列/广播的维护以及数据节点的状态监控。客户端模块通过管理平台模块获取到数据节点的集群配置信息,并将请求均匀发至数据节点,数据节点用于消息的收发处理。

具体的,Broker即RabbitMQ实例,VBroker即为RabbitMQ或RabbitMQ镜像集群,分组由本发明引入。在RabbitMQ集群使用过程中,使用者可以对分组进行在线扩缩容,应用无感知,无需重启应用,分组层提供线性的扩展能力。

进一步地,管理平台模块的自动部署具体为在平台前端一键完成Erlang环境安装、配置文件修改及RabbitMQ部署操作。

进一步地,管理平台模块的队列/广播的维护功能提供三种方式的广播:匿名方式、持久化方式和扩展通配方式。

进一步地,管理平台模块的队列/广播的维护功能在广播前将一个消费ID绑定到广播上并由后台程序创建一用于消息收发的物理队列,有效地避免了原本客户端连接断开窗口内广播消息丢失的问题,提高了消息收发的可靠性。

进一步地,管理平台模块对数据节点的状态监控具体为管理平台模块定期采集数据节点的运行状态,并在出现异常情况时发出告警。如果有数据节点发生故障,除了RabbitMQ本身的主从切换外,管理平台也会尝试拉起故障实例,保证了集群的高可用。此外,用户也可以通过前端页面查看数据节点及各队列目前的运行情况。

进一步地,客户端模块内置路由策略,客户端模块通过路由策略将请均匀地分发到分组内的各个数据节点上。

进一步地,客户端模块内置故障数据节点的隔离和重试功能。

本发明采用以上技术方案,

管理平台模块创建实际队列用于广播消息收发,避免客户端闪断时消息接收不到,并提供三种广播方式实现:匿名方式、持久化方式、扩展通配方式,适应不同业务需要。在数据节点采用分组(Group),从而实现分组间数据的安全隔离;每个分组内设多个镜像集群(VBroker),达到负载均衡;且分组结构具有高可用性,分组内有VBroker故障,客户端自动隔离重试;分组结构便于在线扩缩容,扩缩容过程中客户端不受影响。客户端在初始化时客户端模块通过管理平台获取到集群的配置信息,并通过路由策略使消息均匀地分发到分组的各个VBroker上,从而实现负载均衡。镜像集群中实例出现故障时,自动进行主从切换,管理平台会主动拉起故障实例。广播模式下客户端闪断,消息不丢失,且可在线扩缩容,扩缩容过程应用无感知,可有效提升性能表现。对发生故障的VBroker,客户端内置实现了故障节点的隔离和重试,确保系统的高可用。

本发明提供了一个简单、易用、可靠的分布式消息平台。本发明降低了分布式消息系统安装及运维的复杂度,实现了在线扩缩容、集群水平扩展、负载均衡、集群高可用、安全隔离的特性,增强了消息收发的可靠性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1