掌桥专利:专业的专利平台
掌桥专利
首页

异构系统间的消息传递方法、装置和计算机设备

文献发布时间:2024-04-18 19:58:21


异构系统间的消息传递方法、装置和计算机设备

技术领域

本发明涉及电力自动化系统,具体涉及一种异构系统间的消息传递方法、装置和计算机设备。

背景技术

现有调控中心内外存在多套系统,不同的系统往往采用不同的消息框架。例如,在互联网领域以Kafka和RocketMQ为代表的开源消息总线与自研的消息总线一起,分别在电网公司信息管理业务系统与实时监控业务系统中得到了广泛应用。

随着以“大云物移智链”为代表的计算机通信技术快速发展,这些异构系统间往往存在信息共享的强烈需求。按照传统方式,不同系统实现信息共享需要异构系统两端分别熟悉对端的消息中间件,或者另找熟悉的第三方消息中间件作为桥梁来解决系统间消息的问题,这对不同系统实现信息交互要求高,协调工作多,限制了异构系统间信息共享的能力,存在信息交互壁垒,难以整合电网各类信息资源,难以实现电网数据充分共享。业务的发展迫切需要提出突破异构系统开放生态的消息技术,使得不同系统不用深入了解对端消息总线知识的情况下,通过使用本地消息总线框架,就能获取对端系统的消息。

此外,现有异构系统间信息交换较少通盘考虑,存在跨多个系统间交互可靠运行问题,缺少统一的冗余部署方法和集群管理机制,同时出现故障难以诊断,运维复杂性较高。首先,缺乏海量报文长时间持久化机制,推送模式下只能实现短时间的消息缓存,难以应对广域环境下大量客户端差异化的网络状况;其次,报文通常依次处理,未进行分组批量管理,报文缓存方式不能满足高速传输的需要;再次,随着数据量增加、客户端增多,单点转发在性能上存在瓶颈,需要研究扩展机制;同时,跨中心消息共享,消息流转的链条较长,出现故障难以诊断,需要提出消息传输故障定位的方法。

发明内容

发明目的:本发明提供一种异构系统之间的消息传递方法、装置及计算机设备,解决异构系统间消息共享困难,消息流转链条较长消息传输故障不容易定位的问题。

技术方案:第一方面,提供一种异构系统间的消息传递方法,消息在生产者与消费者之间传递,所述生产者和消费者各自包括本地消息系统、消息订阅模块、消息同步模块,并均配置有消息存储服务,所述消费者还包括消息发布模块;所述方法包括:

在消息生产者端,产生的消息进入本地消息系统,消息订阅模块订阅系统消息后,将收到的消息进行统一格式转换,通过消息存储服务将消息持久化存储,并通过消息同步模块将统一格式的消息同步给消费者;

在消息消费者端,消息同步模块将收到的消息通过消息存储服务进行持久化存储,消息发布模块通过消息存储服务拉取消息,然后将统一格式消息进行本地消息格式转换后发送到本地消息系统,消息订阅模块订阅系统消息后,消息消费者从本地消息系统获取消息;

在消息传递过程中,传输消息的当前节点信息被写入消息中,消息携带的各节点信息构成消息传输路径。

根据第一方面的某些实施方式,消息订阅模块、消息同步模块、消息发布模块提供的消息订阅服务、消息同步服务、消息发布服务是基于分布式协调服务的选举机制进行管理的,所述分布式协调服务的选举机制是指多台服务器通过选举机制选出指定消息组的服务节点,由该服务节点提供服务,当提供服务的服务节点出现故障时,故障节点所承载的任务会在剩余的服务器中重新选出服务节点进行处理。

根据第一方面的某些实施方式,基于分布式协调服务的选举机制,消息订阅服务将系统中的消息主题分成多个组,每组包含一系列主题,不同的组会选出各自的消息订阅服务节点,完成本组消息主题的消息订阅与接收。

根据第一方面的某些实施方式,基于分布式协调服务的选举机制,选出特定关联消息主题集合转发任务的服务器,把统一格式消息同步到指定的异构系统内部,实现系统之间的消息转发。

根据第一方面的某些实施方式,基于分布式协调服务的选举机制,通过配置管理读取配置,获得消息发布主题分组信息,然后为每个关联消息主题集合的消息发布任务选出服务节点,由选出的节点提供消息的发布服务。

根据第一方面的某些实施方式,传输消息的当前节点信息写入消息中包括:传输的消息携带链路信息,链路信息包括链路全局ID、父ID、当前ID,消息第一次转发时生成一个链路全局ID、当前ID,并跟随消息被传递下去,每个传输节点收到消息时都会生成一个全新的当前ID,消息携带的上一级的当前ID作为本节点消息的父ID,全局链路ID在消息传递过程中不会被修改,根据这些ID信息确定消息转发的路径。

根据第一方面的某些实施方式,消息消费者的订阅信息在系统间定时同步更新。

根据第一方面的某些实施方式,消息同步服务部署在网关机服务器上,当网关机服务器包括多台服务器时,每台服务器上都部署消息同步服务。

第二方面,提供一种异构系统之间的消息传递装置,包括:本地消息系统、消息订阅模块、消息同步模块、消息发布模块,并配置有消息存储服务;

所述消息传递装置作为消息生产者时,产生的消息进入本地消息系统,消息订阅模块订阅系统消息后,将收到的消息进行统一格式转换,通过消息存储服务将消息持久化存储,并通过消息同步模块将统一格式的消息同步给消费者;

所述消息传递装置作为消息消费者时,消息同步模块将收到的消息通过消息存储服务进行持久化存储,消息发布模块通过消息存储服务拉取消息,然后将统一格式消息进行本地消息格式转换后发送到本地消息系统,消息订阅模块订阅系统消息后,消息消费者从本地消息系统获取消息;

所述消息在传递过程中,传输消息的当前节点信息被写入消息中,消息携带的各节点信息构成消息传输路径。

第三方面,本发明还提供一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如本发明第一方面所述的异构系统间的消息传递方法的步骤。

有益效果:本发明实现了异构系统之间消息的共享,通过异构系统间消息订阅与发布技术,跨系统交互消息的应用只需要使用自身本地系统的消息客户端生产或者消费消息,不需要感知对端系统所实际使用的消息中间件,屏蔽了异构系统的差异。通过多机协调服务机制,可以避免服务的单点故障,保证了服务的可靠性。根据消息链路ID,提供了便于消息链路故障的诊断方法。

附图说明

图1是本发明具体实施方式中的多机协调服务示意图。

图2是本发明具体实施方式中的异构系统间消息共享示意图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

实施例1:

电网调度系统中,异构系统之间的消息共享分为消息订阅服务、消息发布服务、消息跨系统同步服务,这三个服务都是以分布式多机协调为基础,多个服务节点进行统一管理,如图1所示,下面以消息订阅服务为例进行说明。

消息订阅服务将系统中的消息主题分成很多组,每组包含一系列主题,不同的组会选出各自的消息订阅服务节点,完成本组消息主题的消息订阅与接收,达到负载分流效果。每组的消息订阅服务在系统内采用多机模式运行,通过配置管理读取配置信息,多个节点向分布式协调服务申请占用任务,而只有申请成功的节点,才能够实际进行本组消息的订阅。

例如,在配置文件中配置一个组,一个组中包含多个主题的消息,系统内所有的服务节点(服务器)根据分布式协调机制给这个组选出服务主机,选举的原则是先锁定这个组的服务器将被选为服务的主机。当一个组被某台服务器锁定后,其他服务器就无法再锁定。如果服务的主机出现了故障,则其他的服务器会重新通过选举来锁定这个组。参照图1,部署了订阅服务的多个消息订阅服务节点(A至N)向分布式协调服务请求占用订阅任务1和订阅任务2,任务1和任务2分别对应一个组,由于发送的顺序或网络传输条件的不同,其中节点A优先锁定了任务1,节点B优先锁定了任务2,则分布式协调服务向节点A返回订阅任务1成功的响应和订阅任务2失败的响应,向节点B返回订阅任务1失败的响应和订阅任务2成功的响应,向节点N发送订阅任务1失败的响应和订阅任务2失败的响应。此时,节点A作为选中的服务节点,提供任务1对应的订阅服务,节点B作为选中的服务节点,提供任务2对应的订阅服务。

可以看出,消息的订阅服务是由多台服务节点共同协调完成的,当其中一台服务节点出现了故障时,故障节点所负责的消息订阅任务会在剩余的机器中重新选出服务节点,保证了服务的可靠性。

类似地,消息跨系统同步服务、消息发布服务以同样的机制实现多机协调的管理。需要指出的是,系统中一般部署用于和其他系统进行交互的对外代理服务器,也称为网关机服务器,其他服务则利用内部网络,不与外部系统直接通信,因此,消息跨系统同步服务只在代理服务器/网关机服务器上部署,即两个系统之间能够相互通信的服务器。

实施例2:

如图2所示,一种基于多机协调的消息传递实现方法,包括以下步骤:

步骤1,系统B中的消息消费者向本地的消息系统订阅所需的消息,并告知消息订阅模块所需要的消息主题,消息订阅模块通过配置管理模块提供的配置,把订阅主题信息同步到系统A的消息订阅模块;

步骤2,系统A中的消息订阅模块根据配置管理中的主题映射关系,将系统B的订阅信息主题映射到本地系统的消息主题,然后订阅本系统消息,主题映射关系是在配置文件中配置好的,例如,系统B的主题1---》统一格式的主题1----》系统A的通道1;

步骤3,系统A消息生产者通过本地消息客户端接口将消息发送到本地消息系统;

步骤4,系统A消息订阅模块接收订阅的消息,将收到的消息进行消息格式转换(转换为统一格式)后,通过消息存储服务将消息持久化存储;

步骤5,系统A消息同步模块从消息存储服务拉取消息,将消息同步到B系统;

步骤6,系统B的消息同步模块将收到的消息通过消息存储服务将消息持久化存储;

步骤7,系统B的消息发布模块通过消息存储服务拉取消息,然后将消息进行消息格式转换(从统一格式转换为本地消息格式)后发送到本地的消息系统,消息消费者使用消息客户端从本地的消息系统获取到消息。

从上述步骤可以看出,异构系统之间的消息传递分为三步,第一步是本系统内消息的订阅与接收存储为统一格式消息;第二步是本系统内存储的网关统一格式消息同步到异构系统;第三步就是异构系统接收到系统外的统一格式消息,经过格式转换后在本系统内部重新发布。由于消息订阅、消息发布、消息同步服务使用的都是多机协调机制,有效的进行了消息分流和避免了系统的单点故障。

通过异构系统间消息订阅与发布技术,跨系统交互消息的应用只需要使用自身本地系统的消息客户端生产或者消费消息,不需要感知对端系统所实际使用的消息中间件,屏蔽了异构系统的差异。应用可以根据需要把生产的消息共享到异构系统,也能接收到异构系统生产的消息。可以看出,通过异构系统间消息订阅与发布技术,相当于通过软件的形式建立了网关链路,能够实现异构系统间的消息传递和共享。

本发明通过消息的订阅、发布、同步服务实现系统之间的消息的无感知共享,并且以分布式多机协调服务为基础,实现了多服务器协调完成消息的传递,最大可能的避免服务单点故障,满足了异构系统之间消息共享的需要。

本发明提供一种异构系统之间的消息传递装置,包括:本地消息系统、消息订阅模块、消息同步模块、消息发布模块,并配置有消息存储服务,该消息传递装置可以作为消息生产者,也可以作为消息消费者,作为消息生产者时,产生的消息进入本地消息系统,消息订阅模块订阅系统消息后,将收到的消息进行统一格式转换,通过消息存储服务将消息持久化存储,并通过消息同步模块将统一格式的消息同步给消费者;

消息传递装置作为消息消费者时,消息同步模块将收到的消息通过消息存储服务进行持久化存储,消息发布模块通过消息存储服务拉取消息,然后将消息进行消息格式转换后发送到本地消息系统,消息订阅模块订阅系统消息后,消息消费者从本地消息系统获取消息。

本发明中针对订阅服务,订阅服务同时为消息消费者提供订阅服务,并且在系统间同步这些订阅信息,告知其它系统哪些订阅信息是活的,有效防止订阅服务的资源浪费。消息消费者的订阅信息在系统间可以定时进行同步更新。

针对消息同步,基于分布式协调服务的选举机制,选出特定“关联消息主题集合”转发任务的服务器,把统一格式消息同步到指定的异构系统内部,实现系统之间的消息转发。同步服务部署在网关机服务器上,同时网关机服务器可以有多台服务器,每台服务器上都会部署消息同步服务。

针对消息发布,基于分布式协调服务,通过配置管理读取配置,获得消息发布主题分组信息,然后为每个关联消息主题集合的消息发布任务选出服务节点,由选出的节点提供消息的发布服务。消息发布服务,是将获取到的统一格式消息,经过消息格式转换成本系统内部消息,即实现了从统一格式消息的本地消息格式转换的功能。本系统的应用需要接收转发过来的消息时,只调用本系统内的消息接收机制即可,不用感知是来自哪个系统。

消息传输过程中,会携带消息链路信息,包括链路全局ID、父ID、当前ID,消息第一次转发时生成一个全局链路ID、当前ID,会跟随消息被传递下去。例如,系统内的消息第一次被服务端收集起来的时候,会自动生成一个唯一的标识(诸如uuid的标识),然后这个标识被存入到统一格式的消息头部,跟着消息传送至下一转发节点。每个传输节点都会生成一个全新的当前ID,消息携带的上一级的当前ID作为本节点消息的父ID。全局链路ID在消息传递过程中不会被修改,根据这些消息ID可以确定消息转发的路径。当消息丢失时,可以根据转发路径信息查看缺失哪部分转发信息,因此链路信息为消息链路故障的诊断提供了可靠的依据。

本发明还提供一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如本发明所述的异构系统间的消息传递方法的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程、以及流程图中的流程的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程中指定的功能的步骤。

相关技术
  • 直播间话题的生成方法、装置、计算机设备和存储介质
  • 直播间话题设置方法、装置、计算机设备和存储介质
  • 间佣率预测方法、装置、计算机设备及存储介质
  • 设备标示方法、装置、系统、计算机设备和存储介质
  • 计算机设备的锁屏控制方法、装置、系统及设备、介质
  • 模块间的消息传递方法、装置、电子设备和计算机可读介质
  • 模块间的消息传递方法、装置、电子设备和计算机可读介质
技术分类

06120116481131