一种基于微服务架构的消息发布方法及系统与流程

文档序号:31450375发布日期:2022-09-07 13:06阅读:92来源:国知局
一种基于微服务架构的消息发布方法及系统与流程

1.本技术涉及计算机技术领域,特别涉及一种基于微服务架构的消息发布方法及系统、计算设备和计算机可读存储介质。


背景技术:

2.微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模组化的方式组合出复杂的大型应用程序。其中,消息传输是微服务架构下必须考虑的重点技术。在现有微服务的架构下,消息传输方案多采用总线和消息队列的方式,采用该方式的开发效率较低,在解决消息重复消费、消息堆积以及消息丢失等问题时,需要消耗开发人员的大量精力。


技术实现要素:

3.有鉴于此,本技术实施例提供了一种基于微服务架构的消息发布方法及系统、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
4.根据本技术实施例的第一方面,提供了一种基于微服务架构的消息发布方法,包括:
5.设置包括了多个节点的分布式消息中心;
6.设置zookeeper消息服务,并在所述zookeeper消息服务中设置消息节点;
7.将对所述消息节点有订阅需求的消息中心在zookeeper消息服务中进行监听注册;
8.微服务接收任务请求,并根据所述任务请求产生消息数据,将所述消息数据发送给第一消息中心;
9.所述第一消息中心将消息数据发布到所述消息节点;
10.当其他消息中心监听到所述消息节点的预设事件时,从该消息节点获取消息数据,进而将获取的消息数据发送到与消息中心建立了连接的客户端。
11.根据本技术实施例的第二方面,提供了一种基于微服务架构的消息发布系统,包括:
12.部署在zookeeper消息服务中的消息节点;
13.微服务单元,用于接收客户端的任务请求执行业务逻辑,并生成消息数据;
14.分布式消息中心,用于接收微服务单元生成的消息数据,并发送给所述消息节点;
15.所述分布式消息中心还包括监听器,用于对所述消息中心订阅的消息节点进行监听;当所述监听器监听到所述消息节点的预设事件时,从所述消息节点获取消息数据后发送到与所述消息中心建立了连接的客户端;
16.所述zookeeper消息服务还包括监听注册单元,用于对所述监听器进行注册。
17.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述基于
微服务架构的消息发布方法的步骤。
18.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于微服务架构的消息发布方法的步骤。
19.本技术实施例中,为了实现微服务架构中的各种类型的消息通知,在微服务架构中设置分布式消息中心,建立起与客户端的链接;当有新消息产生时不再使用消息队列而是发送给消息中心,由消息中心根据消息的类型来实现相应的消息发送功能;进一步,为了将消息通知到微服务的所有客户端,消息中心将消息数据发送给由zookeeper实现的消息服务,利用zookeeper的节点存储消息数据,同时使用zookeeper的监听及通知机制实现了新消息的监听,在数据变更发生时分布式消息中心根据zookeeper发送的通知获取消息的具体内容,进而通知到所有的客户端。通过本技术实施例的方法,不仅将微服务的业务逻辑与消息处理进行了解耦,还创造性的使用消息中心实现了消息的多种送达方式。相比现有技术中使用总线或消息队列,降低了开发难度,提高了项目的开发效率;进一步还实现了消息触达功能,在微服务与客户端之间使用websocket协议,确保了消息被客户端收到,实现了一个完整、高效且简洁的消息发布系统。
附图说明
20.图1是本技术实施例提供的基于微服务架构的消息发布方法的系统架构示意图;
21.图2是本技术实施例提供的基于微服务架构的消息发布方法的流程示意图;
具体实施方式
22.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
23.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
24.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“响应于确定”。
25.在本技术中,提供了一种基于微服务架构的消息发布方法及系统、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
26.下面说明本技术实施例提供的消息处理设备的示例性应用,本技术实施例提供的消息发布方法及系统中涉及到的设备可以为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以为服务器。
27.参见图1,图1是本技术实施例提供的基于微服务架构的消息发布方法的架构示意图,在图1中客户端200通过网络300连接网关设备400,网关设备400连接分布式消息中心500、微服务集群600,分布式消息中心500与消息服务服务器700连接。其中网络300可以是广域网或者局域网,又或者是二者的组合。
28.在实际应用中,客户端200可以为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,还可以为台式计算机、媒体播放器、游戏机、电视机或者这些数据处理设备中任意两个或多个的组合;网关设备400、分布式消息中心500、微服务集群600以及消息服务服务器700可以基于独立的物理服务器,也可以基于多个物理服务器构成的服务器集群或者分布式系统,还可以基于提供基础云计算服务的云服务器。
29.在一些实施例中,如图1所示,客户端200上的应用程序通过网络300向网关设备400发送任务请求。网关设备400接收客户端发送的任务请求,确定任务请求对应的微服务,以及微服务所对应的目标服务器,向目标服务器转发任务请求;微服务所对应的目标服务器对任务请求中携带的任务进行处理,同时将执行任务逻辑产生的相关消息发布到分布式消息中心500;分布式消息中心500根据消息的类型对消息进行处理,进一步将需要的消息数据转发给消息服务器700;消息服务服务器700接收消息数据,并通知订阅了该消息的其他分布式消息中心,这些消息中心获取订阅的消息数据后,通过网关设备400返回给与之连接的客户端200。
30.接下来说明本技术实施例提供的基于微服务架构的消息发布方法,参见图2,图2示出了根据本技术一实施例提供的基于微服务架构的消息发布方法的流程图,包括步骤202至步骤210。
31.步骤202:设置包括了多个节点的分布式消息中心;并设置zookeeper消息服务,在所述zookeeper消息服务中设置消息节点。
32.在该步骤中,在微服务架构中设置包含了多个节点的分布式消息中心,该分布式消息中心分别与多个客户端建立网络链接,用于实现消息的发送与接收。
33.同时,使用zookeeper实现消息服务,任何与zookeeper具有相同功能的软件均可被用作实现该消息服务。在zookeeper消息服务中设置至少一个消息节点,该消息节点用于接收和存储分布式消息中心发送的消息数据。
34.步骤204:将对消息节点有订阅需求的多个消息中心在zookeeper中进行监听注册。
35.在一种可行的实施方式中,每一个消息中心既是也是消息的发布者,又是消息的订阅者。
36.将对消息节点有订阅需求的所有消息中心在zookeeper消息服务中进行监听注册,实现消息节点的监听。
37.进一步的,当消息中心在zookeeper消息服务上进行监听注册时,将对消息节点有订阅需求的消息中心在zookeeper消息服务的监听器列表中进行注册,完成消息中心对需要订阅的消息节点的预设路径上的监听。例如,在对消息节点702有订阅需求的消息中心502-504中创建监听器,并将监听器在zookeeper消息服务的监听器列表中进行注册,以实现对消息节点上的预设路径\event进行监听。
38.进一步的,实现消息中心对需要订阅的消息节点的预设路径进行监听时,监听该
预设路径上的预设事件;其中,预设事件包括但不限于预设路径的数据发生变更或预设路径下的子节点数据发生变更。
39.当zookeeper消息服务中预设事件发生时,触发监听,并向监听了该事件的消息中心发送事件通知。
40.步骤206:微服务接收任务请求,根据任务请求产生消息数据,将消息数据发送给第一消息中心。
41.在该步骤中,客户端通过网关访问应用程序所归属的微服务系统中各服务器所提供的微服务,在微服务系统中,网关设备也可称为api网关。在实际应用中,任务请求中携带用于指示路由信息的路由元数据,通过路由元数据,api网关获取任务请求所要访问的目标微服务,以及目标微服务对应的服务实例,进而确定能够处理该任务请求的微服务服务器。
42.在一种可行的实施方式中,该网关设备由springcloud gateway实现,实现了客户端任务请求的负载均衡功能。
43.进一步的,当微服务接收到客户端发送的任务请求后,根据请求中的任务信息执行业务逻辑。
44.同时,微服务根据执行业务逻辑的过程生成相关消息数据,将消息数据发送给与微服务连接的消息中心之一。例如,微服务604根据用户的请求生成了合同审批流程,该审批流程生成时不仅可以通知微服务内的相关用户,还可以通过邮件等方式发给审批者进行提醒,微服务604将审批流程的相关消息统一发送给与之相连的消息中心504。
45.具体的,微服务604通过服务间调用将消息数据发送给消息中心504。
46.步骤208:第一消息中心将消息数据发布到消息节点。
47.在一种可行的实施方式中,消息中心将接收的消息数据发布到zookeeper消息服务的消息节点上。
48.进一步的,当zookeeper消息服务接收到消息中心发送的消息数据时,将其保存在消息节点上的预设路径。
49.进一步的,当zookeeper消息服务的消息节点完成接收消息数据后,产生相应事件。例如,当将消息数据保存到路径\events后,产生nodedatachanged事件。
50.在另一种可行的实施方式中,消息中心接收消息数据后首先对消息数据进行类型判断,根据不同的消息类型进行不同的处理。例如,当消息的类型为邮件类型时,消息中心则直接对该消息进行处理,完成邮件的发送,无需通知消息节点;当消息的类型为通讯工具消息时,消息中心将消息转发给通讯服务;当消息的类型为广播类型时,消息中心将消息数据发布到zookeeper消息服务。
51.本领域技术人员应当知晓,上述消息类型仅为例举而非穷举,本领域技术人员可根据实际的需求设置不同的消息类型,并对不同的消息类型采取不同的处理方式。
52.步骤210:当其他消息中心监听到消息节点的预设事件时,从该消息节点获取消息数据,进而将获取的消息数据发送到与消息中心建立了连接的客户端。
53.在本技术的实施方式中,每一个消息中心既是也是消息的发布者,又是消息的订阅者。
54.在步骤204中,已经完成了多个分布式消息中心在消息服务中的监听注册,即消息中心实现了对订阅的消息节点预设路径上事件的监听。因此,当消息节点接收到消息数据
并触发相应事件后,消息服务触发监听,向订阅了该消息节点的分布式消息节点发送通知。
55.例如,微服务602将产生的消息数据发布到与其连接的消息中心502,该消息为广播消息,需要通知到微服务602的所有客户端。因此,消息中心502将该消息数据发送到zookeeper的消息节点\event路径下,产生节点数据变化事件,zookeeper监听到该事件的发生,向注册了该路径下事件监听的所有消息中心发送通知。当消息中心收到通知后,进一步从订阅的消息节点702的预设路径获取消息数据。
56.进一步的,消息中心基于获取的消息数据生成消息,通过网关设备将消息通知到所有连接到微服务602的客户端,完成消息的送达。
57.进一步的,上述消息通知基于websocket协议发送;若客户端对接收的消息进行了接收确认,表明消息已经触达,完成了此次消息的发生;若消息未触达,则在客户端登录时由消息中心统一重复发送消息数据,避免消息的丢失。
58.在本技术的上述实施例中,为了实现微服务架构中的各种类型的消息通知,在微服务架构中设置分布式消息中心,建立起与客户端的链接;当有新消息产生时不再使用消息队列而是发送给消息中心,由消息中心根据消息的类型来实现相应的消息发送功能;进一步,为了将消息通知到所有的客户端,消息中心将消息数据发送给由zookeeper实现的消息服务,利用zookeeper的节点存储消息数据,同时使用zookeeper的监听及通知机制实现了新消息的监听,使得分布式的消息中心在zookeeper中监听消息节点的变更事件,在数据变更发生时根据zookeeper发送的通知获取消息的具体内容,进而通知到所有的客户端。通过本技术实施例的方法,不仅将微服务的业务逻辑与消息处理进行了解耦,还创造性的设置了分布式消息中心,实现了消息的多种送达方式;而且相比现有技术中使用总线或消息队列,降低了开发难度,提高了项目的开发效率;在此基础上,还进一步实现了消息触达功能,在消息中心与客户端之间使用websocket协议,确保了消息被客户端收到,实现了一个完整、高效且简洁的消息发布系统。
59.与上述方法实施例相对应,本技术还提供了一种基于微服务架构的消息发布系统的实施例,该系统包括:
60.部署在zookeeper消息服务中的消息节点;
61.微服务单元,用于接收客户端的任务请求执行业务逻辑,并生成消息数据;
62.分布式消息中心,用于接收微服务单元生成的消息数据,并发送给所述消息节点;
63.所述分布式消息中心还包括监听器,用于对所述消息中心订阅的消息节点进行监听;当所述监听器监听到所述消息节点的预设事件时,从所述消息节点获取消息数据后发送到与所述消息中心建立了连接的客户端;
64.所述zookeeper消息服务还包括监听注册单元,用于对所述监听器进行注册。
65.上述为本实施例的一种基于微服务架构的消息发布系统的示意性方案。需要说明的是,该系统的技术方案与上述的一种基于微服务架构的消息发布方法的技术方案属于同一构思,该系统的技术方案未详细描述的细节内容,均可以参见上述一种基于微服务架构的消息发布方法的技术方案的描述。
66.本技术一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的一种基于微服务架构的消息发布方法的步骤。
67.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的一种基于微服务架构的消息发布方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述一种基于微服务架构的消息发布方法的技术方案的描述。
68.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述一种基于微服务架构的消息发布方法的步骤。
69.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的一种基于微服务架构的消息发布方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述一种基于微服务架构的消息发布方法的技术方案的描述。
70.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
71.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或系统、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
72.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
73.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
74.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1