一种分布式集群系统的消息传递方法、装置、设备及介质与流程

文档序号:16200349发布日期:2018-12-08 06:33阅读:192来源:国知局
一种分布式集群系统的消息传递方法、装置、设备及介质与流程

本发明实施例涉及分布式存储集群技术领域,特别是涉及一种分布式集群系统的消息传递方法、装置、设备及计算机可读存储介质。

背景技术

随着大数据、云计算的快速发展,分布式集群系统得到了快速的发展及广泛应用。

分布式集群一般包含多个节点,这些节点统一对外提供服务,通常在集群中存在各个子系统,这些子系统基于高可用的要求,会部署在集群中的多个节点上。因此各子系统之间的相互调用也从单机调用转变为分布式集群系统的调用,基于一些业务需求,这些系统之间可能存在相互依赖以及相互调用。

随着分布式集群系统处理的业务功能的逐渐丰富,分布式集群系统中包含的子系统数目也越来越多,各子系统间调用会变得很复杂。当相互依赖的其中一个子系统发生修改时,所有相关系统调用都需要进行修改。

消息中间件为利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式集群系统的集成。通过提供消息传递和消息排队模型,在分布式环境下扩展进程间的通信,例如目前使用比较广泛的rabbitmq,activemq等。

现有技术中,通常会引入消息中间件来对系统间的相互调用进行解耦,各个子系统通过消息中间件进行消息的发送与接收,将系统间的直接调用转变为基于消息传递的异步调用。

但是,跨节点的消息传递,可能会由于网络等原因出现丢失,因此通过消息中间件进行消息的发送与接收,会存在不一致的可能。可见,如何在分布式集群系统中使用消息中间件进行消息传递时,保证消息传递的一致性,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种分布式集群系统的消息传递方法、装置、设备及计算机可读存储介质,基于消息中间件在分布式集群系统中进行消息传递,既完成了分布式集群系统中各子系统间的解耦,又可保证消息传递的可靠性、及业务操作和消息传递的一致性。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种分布式集群系统的消息传递方法,基于消息中间件,包括:

获取第一业务应用的待发送消息,将其发送至第二业务应用,并将所述待发送消息的状态更改为已发送;

获取所述第二业务应用反馈的消息确认信息,将所述待发送消息从中间件队列中删除。

可选的,所述获取第一业务应用的待发送消息包括:

按照预设频率查询所述第一业务应用的第一消息表,获取所述第一消息表中的待发送消息。

可选的,所述获取所述第二业务应用反馈的消息确认信息包括:

判断在预设时长内是否收到所述第二业务应用反馈的消息确认信息;

若否,则将所述待发送消息再次发送给所述第二业务应用,直至接收到所述第二业务应用反馈的消息确认信息。

本发明实施例另一方面提供了一种分布式集群系统的消息传递装置,基于消息中间件,包括:

信息发送模块,用于获取第一业务应用的待发送消息,将其发送至第二业务应用,并将所述待发送消息的状态更改为已发送;

信息确认接收模块,用于获取所述第二业务应用反馈的消息确认信息,将所述待发送消息从中间件队列中删除。

可选的,所述信息发送模块为按照预设频率查询所述第一业务应用的第一消息表,获取所述第一消息表中的待发送消息的模块。

可选的,所述信息确认接收模块包括:

判断子模块,用于判断在预设时长内是否收到所述第二业务应用反馈的消息确认信息;

再次发送子模块,用于在预设时长内没有收到所述第二业务应用反馈的消息确认信息,则将所述待发送消息再次发送给所述第二业务应用,直至接收到所述第二业务应用反馈的消息确认信息。

本发明实施例还提供了一种分布式集群系统的消息传递设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述分布式集群系统的消息传递方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式集群系统的消息传递程序,所述分布式集群系统的消息传递程序被处理器执行时实现如前任一项所述分布式集群系统的消息传递方法的步骤。

本发明实施例还提供了一种分布式集群系统的消息传递方法,基于第一业务应用,包括:

在执行业务操作时,通过本地事务,在第一消息表中写入消息,所述消息的状态为待发送;

将所述消息发送至消息中间件,以使所述消息中间件将所述消息发送至第二业务应用,并在完成发送后将所述消息的状态更改为已发送。

本发明实施例最后还提供了一种分布式集群系统的消息传递方法,基于第二业务应用,包括:

当接收到消息中间件发送的消息,根据所述消息的哈希值,在第二消息表中查找是否已处理过所述消息;

若已处理,则向所述消息中间件发送所述消息的处理结果;

若未处理,则根据所述消息携带的信息执行对应的业务操作处理,并向所述消息中间件反馈消息确认信息;当执行业务操作完成后,将所述消息及相对应的哈希值保存至所述第二消息表中。

本发明实施例提供了一种分布式集群系统的消息传递方法,消息中间件获取第一业务应用的待发送消息,将其发送至第二业务应用,在发送完成之后将待发送消息的状态更改为已发送;然后在接收到第二业务应用反馈的消息确认信息之后,将待发送消息从中间件队列中删除。本申请提供的技术方案的优点在于,基于消息中间件的信息传递,业务处理和消息的传递是异步进行,从而避免了对分布式集群系统业务操作的影响,将分布式集群系统间调用从远程调用转变为基于消息传递的方式,对各子系统进行了解耦;通过信息发送的一致性和接收信息的一致性,保证信息传递过程中一致性,既能通过传递消息对分布式集群系统间的复杂调用进行解耦,降低分布式集群系统的复杂性;也保证分布式集群系统间通信的可靠性,及业务操作与消息传递的一致性。

此外,本发明实施例还针对分布式集群系统的消息传递方法提供了相应的实现装置、设备及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置、设备及计算机可读存储介质具有相应的优点。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式集群系统的消息传递方法的交互流程示意图;

图2为本发明实施例提供的分布式集群系统的消息传递装置的一种具体实施方式结构图;

图3为本发明实施例提供的分布式集群系统的消息传递装置的另一种具体实施方式结构图;

图4为本发明实施例提供的分布式集群系统的消息传递装置的再一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先参见图1,图1为本发明实施例提供的一种分布式集群系统的消息传递方法的交互流程示意图,本发明实施例可包括以下内容:

s101:第一业务应用在执行业务操作时,通过本地事务,在第一消息表中写入消息,该消息的状态为待发送状态。

第一消息表用于存储第一业务应用的消息,第一业务应用可将执行业务操作时需要发送的消息,通过本地事务写入在第一消息表中,在消息中间件未读取消息时,第一消息表中的信息的状态为待发送状态。

s102:第一业务应用在完成业务操作后,向消息中间件发送将该消息发送至第二业务应用的请求指令。

s103:消息中间件获取第一业务应用在第一消息表中的待发送消息,将其发送至第二业务应用,并将待发送消息的状态更改为已发送。

s104:第二业务应用接收到消息中间件发送的消息,根据该消息的哈希值,在第二消息表中查找是否已处理过该消息,若是,则执行s105;若否,则执行s106。

第二消息表为用于存储第二业务应用的消息。

至于如何获取消息的哈希值、以及根据哈希值从第二消息表中查询该信息,均可参见现有技术,此处,便不在赘述。

s105:第二业务应用向消息中间件发送消息的处理结果。

处理结果可为已对该消息进行了处理的结果,或者是已完成,以使消息中间件明确第二业务应用已收到第一业务应用发送给其的消息。

s106:第二业务应用根据消息携带的信息执行对应的业务操作处理,并向消息中间件反馈消息确认信息。

第一业务应用在向第二业务应用发送消息时,消息中会携带第一业务应用的相关地址信息、第二业务应用的相关地址信息、第二业务应用需要执行的业务操作等,以使第二业务应用明确其要执行的任务。

s107:第二业务应用执行业务操作完成后,将消息及相对应的哈希值保存至第二消息表中。

s108:消息中间件获取第二业务应用反馈的消息确认信息,并将该消息从中间件队列中删除。

在本发明实施例提供的技术方案中,基于消息中间件的信息传递,业务处理和消息的传递是异步进行,从而避免了对分布式集群系统业务操作的影响,将分布式集群系统间调用从远程调用转变为基于消息传递的方式,对各子系统进行了解耦;通过信息发送的一致性和接收信息的一致性,保证信息传递过程中一致性,既能通过传递消息对分布式集群系统间的复杂调用进行解耦,降低分布式集群系统的复杂性;也保证分布式集群系统间通信的可靠性,及业务操作与消息传递的一致性。

基于上述实施例,为了进一步保证信息发送的一致性,本申请还可在消息中间件增加一个轮询线程,该轮询线程可按照一定的频率(例如每隔1分钟)定时查询第一消息表,及时查询第一消息表中状态为待发送的消息,将因为网络等原因没有成功发送的消息,再次进行发送操作,同样,完成发送后,将消息状态更改为“已发送”。

而为了进一步保证信息接收的一致性,本申请还可包括:

消息中间件判断在预设时长内(例如5min)是否收到第二业务应用反馈的消息确认信息;

若否,则将待发送消息再次发送给第二业务应用,直至接收到第二业务应用反馈的消息确认信息。

当然,如果消息中间件连续多次(可根据实际应用场景设置阈值,例如5次)向第二业务应用发送消息,但均未接收到第二业务应用反馈的确认信息,此时,系统可能出现其他问题,可向相关人员进行反馈,以使相关工作人员及时排查问题发生的原因并及时进行维护,提高整个系统的工作效率,进一步保证信息的发送和接收的一致性。

本发明实施例还针对分布式集群系统的消息传递方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的分布式集群系统的消息传递装置进行介绍,下文描述的分布式集群系统的消息传递装置与上文描述的分布式集群系统的消息传递方法可相互对应参照。

参见图2,图2为本发明实施例提供的分布式集群系统的消息传递装置在一种具体实施方式下的结构图,该装置可包括:

信息发送模块201,用于获取第一业务应用的待发送消息,将其发送至第二业务应用,并将待发送消息的状态更改为已发送;

信息确认接收模块202,用于获取第二业务应用反馈的消息确认信息,将待发送消息从中间件队列中删除。

可选的,在一种具体的实施方式中,所述信息发送模块201还可为按照预设频率查询第一业务应用的第一消息表,获取第一业务应用中的待发送消息的模块。

在另外一种实施方式中,所述信息确认接收模块202还可包括:

判断子模块,用于判断在预设时长内是否收到第二业务应用反馈的消息确认信息;

再次发送子模块,用于在预设时长内没有收到第二业务应用反馈的消息确认信息,则将待发送消息再次发送给第二业务应用,直至接收到第二业务应用反馈的消息确认信息。

此外,请参阅图3所示,本申请还提供了另外一种具体实施方式下的分布式集群系统的消息传递装置,具体可包括:

消息写入模块301,用于在执行业务操作时,通过本地事务,在第一消息表中写入消息,消息的状态为待发送;

消息发送模块302,用于将消息发送至消息中间件,以使消息中间件将消息发送至第二业务应用,并在完成发送后将消息的状态更改为已发送。

最后,请参阅图4所所示,本申请还提供了另外一种具体实施方式下的分布式集群系统的消息传递装置,具体可包括:

信息查找模块401,用于当接收到消息中间件发送的消息,根据消息的哈希值,在第二消息表中查找是否已处理过所述消息;

反馈结果模块402,用于当已处理该消息时,则向所述消息中间件发送所述消息的处理结果;

消息处理模块403,用于当已处理该消息时,则根据消息携带的信息执行对应的业务操作处理,并向消息中间件反馈消息确认信息;

消息存储模块404,用于当执行业务操作完成后,将消息及相对应的哈希值保存至所述第二消息表中。

本发明实施例所述分布式集群系统的消息传递装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例基于消息中间件在分布式集群系统中进行消息传递,既完成了分布式集群系统中各子系统间的解耦,又可保证消息传递的可靠性、及业务操作和消息传递的一致性。

本发明实施例还提供了一种分布式集群系统的消息传递设备,具体可包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序以实现如上任意一实施例所述分布式集群系统的消息传递方法的步骤。

本发明实施例所述分布式集群系统的消息传递设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例基于消息中间件在分布式集群系统中进行消息传递,既完成了分布式集群系统中各子系统间的解耦,又可保证消息传递的可靠性、及业务操作和消息传递的一致性。

本发明实施例还提供了一种计算机可读存储介质,存储有分布式集群系统的消息传递程序,所述分布式集群系统的消息传递程序被处理器执行时如上任意一实施例所述分布式集群系统的消息传递方法的步骤。

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例基于消息中间件在分布式集群系统中进行消息传递,既完成了分布式集群系统中各子系统间的解耦,又可保证消息传递的可靠性、及业务操作和消息传递的一致性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种分布式集群系统的消息传递方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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