一种去中心化的消息服务系统的制作方法_3

文档序号:8301517阅读:来源:国知局
统中服务节点异常退出,其处理过程如下:当一个通信连接的一方在设定的时间间隔内没有收到来自对方的心跳消息时,则认为对方已经出现异常不能提供服务,将对方的基本信息从集群节点管理模块中删除,并且断开与对方的通信连接,后续则不再向该异常退出的服务节点发送消息。
[0032]本发明基于去中心化的架构来实现消息服务系统,克服了集中式消息服务系统对中心节点的依赖所导致的单点故障和性能瓶颈等问题,从而实现一个高效和可靠的分布式消息服务系统。本消息服务系统提供集群动态感知功能,能够在不存在中心节点的情况下,及时跟踪集群内服务节点的添加、删除和服务状态变化,从而提供了动态负载均衡和故障转移等功能。
[0033]虽然以上描述了本发明的【具体实施方式】,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
【主权项】
1.一种去中心化的消息服务系统,其特征在于:所述消息服务系统为一集群,所述集群内包含复数个服务节点,各服务节点间通过发送消息进行交互。
2.根据权利要求1所述的一种去中心化的消息服务系统,其特征在于:每个所述服务节点由一集群节点管理模块、一消息发送端模块、一消息路由模块、一消息编码模块、一消息解码模块、一消息分发模块以及至少一消息处理器模块组成; 所述集群节点管理模块负责跟踪和维护集群中所有服务节点的基本信息和服务状态信息,其及时侦测到集群中服务节点的添加、删除或服务状态改变,并且更新其中缓存的数据,所述集群节点管理模块还为消息路由模块中消息的发送对象提供决策数据; 所述消息发送端模块是服务节点内部向集群中其他服务节点发送消息的统一的接口端,服务节点对外发出的消息都是通过调用消息发送端模块来发送的; 所述消息路由模块:在所述消息发送模块接收到消息后,由消息路由模块决定该消息发往集群中的一个或多个服务节点,消息路由模块对消息路由决策依赖所述集群节点管理模块提供的数据; 所述消息编码模块:消息编码模块对待发送的消息进行编程成二进制数据流,通过传输层模块进行传输; 所述传输层模块负责与其它服务节点的连接建立和维护,以及服务节点间数据发送和接收; 所述消息解码模块对传输层接收到的二进制数据流进行解码,得到具体的消息; 所述消息分发模块对接收到的消息进行判断,判断该消息该发送至服务节点内的哪一个消息处理器模块进行处理; 所述消息处理器模块负责对接收到的消息进行处理,各所述消息处理器模块处理至少一种类型的消息,所述消息处理器模块将接收到的消息处理完毕后,调用所述消息发送端模块将处理后得到的结果发送出去。
3.根据权利要求2所述的一种去中心化的消息服务系统,其特征在于:所述服务节点的基本信息包括:集群ID、节点ID、服务名称和服务地址, 所述集群ID:同一个消息服务系统中的每一个服务节点的集群ID相同,用于标识服务节点所属的集群; 所述节点ID:用于唯一标识集群中的一个服务节点,同一个消息服务系统中的每一个服务节点的节点ID必须唯一; 所述服务名称用于标识每个服务节点所能提供的服务;每一种服务至少由一个服务节点提供; 服务地址:各服务节点的服务地址是对集群内其他服务节点提供的访问方式,各服务节点间通过服务地址相互通信和交互。
4.根据权利要求2所述的一种去中心化的消息服务系统,其特征在于:任意两所述服务节点之间进行消息交互,定义其中一服务节点为服务节点A,另一服务节点为服务节点B,其交互过程如下: 步骤1、服务节点A通过所述消息发送端模块将消息发送出去; 步骤2、服务节点A的消息路由模块根据消息的属性和集群节点管理模块提供的集群内所有服务节点的基础信息和服务状态信息,得出结论该消息应该发往服务节点B ; 步骤3、服务节点A的消息编码模块将待发送的消息编码成二进制数据流,并且通过传输层模块发往服务节点B ; 步骤4、服务节点B的传输层模块接收到来自服务节点A的二进制数据流; 步骤5、服务节点B的消息解码模块将接收到的二进制数据流解码成消息对象; 步骤6、服务节点B的消息分发模块将接收到的消息根据消息类型决定将消息发往与该消息类型相匹配的消息处理器模块进行处理; 步骤7、服务节点B的消息处理器模块将接收到的消息处理完毕之后,将处理后的结果通过消息发送端模块发出; 步骤8、服务节点B将结果消息发往服务节点A的过程与消息从服务节点A发往服务节点B的步骤同理。
5.根据权利要求2所述的一种去中心化的消息服务系统,其特征在于:所述消息服务系统中服务节点动态添加,具体步骤如下: 步骤10、新添加的服务节点在运行后,通过网络发布一条“添加节点”的广播消息,该广播消息包含新添加的服务节点的基本信息,包括:集群ID、节点ID、服务名称和服务地址;步骤20、消息服务系统中已经存在的每一个服务节点在收到“添加节点”的广播消息后,首先判断新添加的服务节点的集群ID与自身的集群ID是否相同,如果集群ID不同,则不再处理;如果集群ID相同,则将新添加的服务节点的基本信息记录到其集群节点管理模块中; 步骤30、消息服务系统中已经存在的每一个服务节点根据新添加的服务节点的服务地址,主动与新添加的服务节点建立一条通信连接,并且向新添加的服务节点发送一个握手消息,将该服务节点的基本信息发送给新添加的服务节点; 步骤40、新添加的服务节点将收到的来自同一集群的其他服务节点的基本信息记录到其集群节点管理模块中,从而完成了动态添加过程。
6.根据权利要求2所述的一种去中心化的消息服务系统,其特征在于,所消息服务系统中的每两个服务节点之间都维护着一个通信连接,两个服务节点以固定时间间隔发送心跳信息,用以告知对方各自服务节点的服务状态,包括:服务节点是否存活和压力负载。
7.根据权利要求2所述的一种去中心化的消息服务系统,其特征在于,所述消息服务系统中动态删除一个服务节点的过程如下: 步骤100、服务节点正常退出,在退出前,该服务节点通过网络发布一条“删除节点”的广播消息,该广播消息包含待删除的服务节点的集群ID和节点ID ; 步骤200、消息服务系统中的服务节点在收到其他服务节点的“删除节点”的广播消息后,通过该广播消息的集群ID判断待删除的服务节点是属于同一集群后,则将待删除节点的基本信息从该服务节点的集群节点管理模块中删除,并且断开与待删除节点的通信连接,后续则不再往删除的服务节点发送消息。
8.根据权利要求6所述的一种去中心化的消息服务系统,其特征在于,所述消息服务系统中服务节点异常退出,其处理过程如下:当一个通信连接的一方在设定的时间间隔内没有收到来自对方的心跳消息时,则认为对方已经出现异常不能提供服务,将对方的基本信息从集群节点管理模块中删除,并且断开与对方的通信连接,后续则不再向该异常退出的服务节点发送消息。
【专利摘要】本发明提供一种去中心化的消息服务系统,所述消息服务系统为一集群,所述集群内包含复数个服务节点,各服务节点间通过发送消息进行交互。每个所述服务节点由一集群节点管理模块、一消息发送端模块、一消息路由模块、一消息编码模块、一消息解码模块、一消息分发模块以及至少一消息处理器模块组成。本发明基于去中心化的架构来实现消息服务系统,克服了集中式消息服务系统对中心节点的依赖所导致的单点故障和性能瓶颈等问题,从而实现一个高效和可靠的分布式消息服务系统。本消息服务系统提供集群动态感知功能,能够在不存在中心节点的情况下,及时跟踪集群内服务节点的添加、删除和服务状态变化,从而提供了动态负载均衡和故障转移等功能。
【IPC分类】H04L29-08, H04L12-58
【公开号】CN104618221
【申请号】CN201510003611
【发明人】程行荣, 夏欢, 吴超民, 游锋锋, 杨俊辉
【申请人】厦门雅迅网络股份有限公司
【公开日】2015年5月13日
【申请日】2015年1月6日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1