CN110569135A - 一种基于发布订阅模式的进程间通信方法及*** - Google Patents
一种基于发布订阅模式的进程间通信方法及*** Download PDFInfo
- Publication number
- CN110569135A CN110569135A CN201910845021.6A CN201910845021A CN110569135A CN 110569135 A CN110569135 A CN 110569135A CN 201910845021 A CN201910845021 A CN 201910845021A CN 110569135 A CN110569135 A CN 110569135A
- Authority
- CN
- China
- Prior art keywords
- communication
- message
- publisher
- subscriber
- publishing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种基于发布订阅模式的进程间通信方法及***,其中方法包括:构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。该方法可以适应绝大多数进程间通信的开发场景,并且可以花费很小的成本去改变通信框架和序列化方法,大大提高软件的可维护性、可靠性,从而节省开发成本。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种基于发布订阅模式的进程间通信方法及***。
背景技术
在基于发布订阅模式进行进程间通信时,可以选择各种通信框架,例如LCM,ZeroMQ,ROS以及其它的通信框架。在实际的软件开发过程中,可能会选择其中一种框架来作为进程间通信组件。但是不同的通信框架,接口是不一样的,因此如果现有的框架不能满足需求时将会导致软件需要大量改动,将花费大量的时间从新进行开发调试。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的基于发布订阅模式的进程间通信方法及***。
第一方面,本发明实施例提供了一种基于发布订阅模式的进程间通信方法,包括:
构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;
利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
可选地,所述发布器中的发布端点通过以下方式获取:
为每一通信框架设置对应的第一通信地址,基于每一通信框架的类型和对应的第一通信地址生成对应的发布端点。
可选地,所述订阅器中的订阅端点通过以下方式获取:
为每一通信框架设置对应的第二通信地址,基于每一通信框架的类型和对应的第二通信地址生成对应的订阅端点。
可选地,所述利用所述发布器发布消息,具体包括:
将所述消息序列化为字节流;
发布序列化后的消息。
可选地,所述利用所述订阅器订阅所述消息,具体包括:
创建消息通道,并利用所述消息通道接收序列化后的消息。
可选地,所述利用所述消息通道接收序列化后的消息之后,还包括:
将接收到的序列化后的消息反序列化为对应的结构体。
可选地,所述多个通信框架包括LCM通信框架、ZeroMQ通信框架和ROS通信框架中的至少两个。
第二方面,本发明实施例提供一种基于发布订阅模式的进程间通信***,包括:
构建模块,用于构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;
通信模块,用于利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的基于发布订阅模式的进程间通信方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的基于发布订阅模式的进程间通信方法的步骤。
本发明实施例提供的基于发布订阅模式的进程间通信方法及***,可以适应绝大多数进程间通信的开发场景,并且可以花费很小的成本去改变通信框架和序列化方法,大大提高软件的可维护性、可靠性,从而节省开发成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于发布订阅模式的进程间通信方法的流程图;
图2为本发明实施例中基于发布订阅模式的进程间通信方法的示意图;
图3为本发明实施例中消息发布的流程示意图;
图4为本发明实施例中消息订阅的流程示意图;
图5为本发明实施例提供的一种基于发布订阅模式的进程间通信***的结构框图;
图6为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种基于发布订阅模式的进程间通信方法的流程图,如图1所示,该方法包括:
S101,构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;
S102,利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
具体地,针对现有技术中存在的问题,本发明实施例通过统一发布订阅模式的通信接口,接口兼容LCM、ZeroMQ、ROS通信框架,并且能够兼容新的发布订阅通信模式框架来进行扩展。接口统一的好处是,只需要进行很小的更改,即可以实现发布订阅通信框架的无缝切换。同时在进行进程间通信时,存在序列化的问题,本专利支持lcm、protobuf等序列化接口,并能够扩展支持任意的支持字节流到结构体的序列化反序列化接口。如图2所示,为本发明实施例中基于发布订阅模式的进程间通信方法的示意图。
本发明实施例提供的一种基于发布订阅模式的进程间通信方法,可以适应绝大多数进程间通信的开发场景,并且可以花费很小的成本去改变通信框架和序列化方法,大大提高软件的可维护性、可靠性,从而节省开发成本。
在本发明的一种可选实施例中,所述发布器中的发布端点通过以下方式获取:
为每一通信框架设置对应的第一通信地址,基于每一通信框架的类型和对应的第一通信地址生成对应的发布端点。
在本发明的一种可选实施例中,所述订阅器中的订阅端点通过以下方式获取:
为每一通信框架设置对应的第二通信地址,基于每一通信框架的类型和对应的第二通信地址生成对应的订阅端点。
具体地,本发明实施例使用软件设计模式中的适配模式来进行接口的统一,统一通信接口由3部分组成,发布器(Publisher)、订阅器(Subscriber)、消息通道(Topic),构造一个发布器(Publisher)时,可以选择通信框架类型、通信的地址,发布器将根据这些参数生成对应通信框架的发布端点。对于发布器来说,只需要关注发布的消息以及对应的消息体。同样,构造一个订阅器(Subscriber)时,也可以选择通信框架类型、通信的地址,订阅器将根据这些参数生成对应通信框架的订阅端点。在使用订阅器订阅消息时,会生成对应消息的消息通道(Topic),订阅成功后,直接使用消息通道来接收数据。
在本发明的一种可选实施例中,所述利用所述发布器发布消息,具体包括:
将所述消息序列化为字节流;
发布序列化后的消息。
在本发明的一种可选实施例中,所述利用所述订阅器订阅所述消息,具体包括:
创建消息通道,并利用所述消息通道接收序列化后的消息。
在本发明的一种可选实施例中,所述利用所述消息通道接收序列化后的消息之后,还包括:
将接收到的序列化后的消息反序列化为对应的结构体。
具体地,在使用发布器发送消息时,直接发送字节流,因此接口支持各种序列化接口,在发送时将对应的结构体序列化为字节流进行发送。同样,在接收数据时将接收到的字节流数据反序列化为对应的结构体。如图3和图4分别示出了消息发布和消息订阅的具体流程。
在本发明的一种可选实施例中,所述多个通信框架包括LCM通信框架、ZeroMQ通信框架和ROS通信框架中的至少两个。
图5为本发明实施例提供的一种基于发布订阅模式的进程间通信***结构框图,如图5所示,该***包括:构建模块501和通信模块502。其中,
构建模块501用于构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点。通信模块502用于利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
本发明实施例提供的一种基于发布订阅模式的进程间通信***,可以适应绝大多数进程间通信的开发场景,并且可以花费很小的成本去改变通信框架和序列化方法,大大提高软件的可维护性、可靠性,从而节省开发成本。
进一步地,构建模块具体用于:
为每一通信框架设置对应的第一通信地址,基于每一通信框架的类型和对应的第一通信地址生成对应的发布端点。
进一步地,构建模块具体用于:
为每一通信框架设置对应的第二通信地址,基于每一通信框架的类型和对应的第二通信地址生成对应的订阅端点。
进一步地,通信模块具体用于:
将所述消息序列化为字节流;
发布序列化后的消息。
进一步地,通信模块具体用于:
创建消息通道,并利用所述消息通道接收序列化后的消息。
进一步地,通信模块还用于:
将接收到的序列化后的消息反序列化为对应的结构体。
图6为本发明实施例提供的电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储在存储器630上并可在处理器610上运行的计算机程序,以执行上述各方法实施例所提供的网络拓扑探测方法,例如包括:构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的网络拓扑探测方法,例如包括:构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于发布订阅模式的进程间通信方法,其特征在于,包括:
构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;
利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
2.根据权利要求1所述的方法,其特征在于,所述发布器中的发布端点通过以下方式获取:
为每一通信框架设置对应的第一通信地址,基于每一通信框架的类型和对应的第一通信地址生成对应的发布端点。
3.根据权利要求1所述的方法,其特征在于,所述订阅器中的订阅端点通过以下方式获取:
为每一通信框架设置对应的第二通信地址,基于每一通信框架的类型和对应的第二通信地址生成对应的订阅端点。
4.根据权利要求1所述的方法,其特征在于,所述利用所述发布器发布消息,具体包括:
将所述消息序列化为字节流;
发布序列化后的消息。
5.根据权利要求4所述的方法,其特征在于,所述利用所述订阅器订阅所述消息,具体包括:
创建消息通道,并利用所述消息通道接收序列化后的消息。
6.根据权利要求5所述的方法,其特征在于,所述利用所述消息通道接收序列化后的消息之后,还包括:
将接收到的序列化后的消息反序列化为对应的结构体。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述多个通信框架包括LCM通信框架、ZeroMQ通信框架和ROS通信框架中的至少两个。
8.一种基于发布订阅模式的进程间通信***,其特征在于,包括:
构建模块,用于构建发布器和订阅器,其中,所述发布器包括对应于多个通信框架的多个发布端点,所述订阅器包括对应于所述多个通信框架的多个接收端点;
通信模块,用于利用所述发布器发布消息,并利用所述订阅器订阅所述消息,完成进程间的通信。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于发布订阅模式的进程间通信方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述基于发布订阅模式的进程间通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910845021.6A CN110569135A (zh) | 2019-09-07 | 2019-09-07 | 一种基于发布订阅模式的进程间通信方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910845021.6A CN110569135A (zh) | 2019-09-07 | 2019-09-07 | 一种基于发布订阅模式的进程间通信方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110569135A true CN110569135A (zh) | 2019-12-13 |
Family
ID=68778469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910845021.6A Pending CN110569135A (zh) | 2019-09-07 | 2019-09-07 | 一种基于发布订阅模式的进程间通信方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569135A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111756846A (zh) * | 2020-06-24 | 2020-10-09 | 杭州安森智能信息技术有限公司 | 一种轻量型机器人跨进程通信的方法 |
CN113961373A (zh) * | 2021-10-27 | 2022-01-21 | 北京斯年智驾科技有限公司 | 一种港口自动驾驶单车端通信消息解耦处理方法 |
CN115473863A (zh) * | 2022-07-25 | 2022-12-13 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056190A (zh) * | 2006-04-12 | 2007-10-17 | 国际商业机器公司 | 提供发布/订阅***中访问控制的方法和装置及所述*** |
CN101251860A (zh) * | 2008-03-10 | 2008-08-27 | 北京航空航天大学 | 一种Web信息发布管理***与方法 |
CN105407024A (zh) * | 2015-09-23 | 2016-03-16 | 中国电子科技集团公司第二十九研究所 | 一种基于发布订阅通信机制的异构数据互通方法及装置 |
CN206465086U (zh) * | 2016-12-30 | 2017-09-05 | 深圳光启合众科技有限公司 | 机器人及机器人通信*** |
CN108683733A (zh) * | 2018-05-15 | 2018-10-19 | 苏州玩友时代科技股份有限公司 | 兼容全平台手机推送***及方法 |
-
2019
- 2019-09-07 CN CN201910845021.6A patent/CN110569135A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056190A (zh) * | 2006-04-12 | 2007-10-17 | 国际商业机器公司 | 提供发布/订阅***中访问控制的方法和装置及所述*** |
CN101251860A (zh) * | 2008-03-10 | 2008-08-27 | 北京航空航天大学 | 一种Web信息发布管理***与方法 |
CN105407024A (zh) * | 2015-09-23 | 2016-03-16 | 中国电子科技集团公司第二十九研究所 | 一种基于发布订阅通信机制的异构数据互通方法及装置 |
CN206465086U (zh) * | 2016-12-30 | 2017-09-05 | 深圳光启合众科技有限公司 | 机器人及机器人通信*** |
CN108683733A (zh) * | 2018-05-15 | 2018-10-19 | 苏州玩友时代科技股份有限公司 | 兼容全平台手机推送***及方法 |
Non-Patent Citations (1)
Title |
---|
刘号 等: "基于LCM与ZeroMQ的进程间通信研究", 《电子科学技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111756846A (zh) * | 2020-06-24 | 2020-10-09 | 杭州安森智能信息技术有限公司 | 一种轻量型机器人跨进程通信的方法 |
CN111756846B (zh) * | 2020-06-24 | 2023-09-29 | 杭州安森智能信息技术有限公司 | 一种轻量型机器人跨进程通信的方法 |
CN113961373A (zh) * | 2021-10-27 | 2022-01-21 | 北京斯年智驾科技有限公司 | 一种港口自动驾驶单车端通信消息解耦处理方法 |
CN115473863A (zh) * | 2022-07-25 | 2022-12-13 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及*** |
CN115473863B (zh) * | 2022-07-25 | 2023-08-08 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463418B (zh) | 一种服务器中间件的配置文件生成方法及装置 | |
CN110569135A (zh) | 一种基于发布订阅模式的进程间通信方法及*** | |
CN112260853B (zh) | 容灾切换方法、装置、存储介质及电子设备 | |
CN106331345B (zh) | 一种交互消息展示方法、装置及*** | |
CN107678918B (zh) | 一种分布式文件***的osd心跳机制设置方法及装置 | |
US20130239231A1 (en) | Communication Between Web Applications | |
WO2019201340A1 (zh) | 处理器核心调度方法、装置、终端及存储介质 | |
CN112243033B (zh) | 获取内存信息的方法、装置、设备及计算机可读存储介质 | |
CN111064626A (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
EP3813326B1 (en) | Method and apparatus for processing webpage, device, and storage medium | |
CN113453073A (zh) | 一种图像渲染方法、装置、电子设备及存储介质 | |
CN111625322A (zh) | 数据处理方法、***及设备 | |
CN116721007B (zh) | 任务控制方法、***及装置、电子设备和存储介质 | |
CN115809056B (zh) | 组件复用实现方法、装置和终端设备、可读存储介质 | |
CN112559109A (zh) | 基于组件库的显示界面的生成方法及***、设备及介质 | |
WO2020220272A1 (zh) | 更改资源状态的方法、***、终端及存储介质 | |
CN110599112B (zh) | 一种网络页面开发、维护方法和装置 | |
CN112084099B (zh) | 基于主机获取报警状态值的方法、装置、设备及存储介质 | |
CN115774573A (zh) | 应用集成方法、装置、电子设备和存储介质 | |
CN113722037B (zh) | 一种用户界面的刷新方法、装置、电子设备及存储介质 | |
CN115731319A (zh) | 图形绘制方法、装置、设备及存储介质 | |
CN111984305B (zh) | 一种应用配置方法及装置、计算机设备 | |
US10986051B1 (en) | System and method for dynamic chat message customization | |
CN110995565A (zh) | 一种基于mvvm架构的页面显示方法 | |
TW202001554A (zh) | Android系統Activity的啟動方法和裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191213 |
|
RJ01 | Rejection of invention patent application after publication |