进程间通信方法、系统、存储介质和计算机设备技术方案

技术编号:33542968 阅读:14 留言:0更新日期:2022-05-21 09:55
本公开的实施方式涉及计算机技术领域,更具体地,涉及进程间通信方法、系统、存储介质和计算机设备。进程间通信方法应用于共享内核的进程,包括:消息发送进程将待发送的数据报文发送至共享内存,并向消息接收进程发送通知报文,通知报文携带数据报文存储于共享内存中的地址信息;内核响应于通知报文,将通知报文传输至消息接收进程;消息接收进程解析通知报文以获得地址信息,并根据地址信息自共享内存中获取数据报文。本公开能够减少进程间通信所需的数据拷贝开销,并能够进一步避免内核的网络栈开销,实现提高进程间通信速度,减少系统消耗。耗。耗。

【技术实现步骤摘要】
进程间通信方法、系统、存储介质和计算机设备


[0001]本公开的实施方式涉及计算机
,更具体地,本公开的实施方式涉及进程间通信方法、系统、存储介质和计算机设备。

技术介绍

[0002]本部分旨在为权利要求中陈述的本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。
[0003]目前的进程间通信方式,需要调用内核的网络栈,将待交换的完整数据从发送进程拷贝到内核空间,再从内核空间拷贝到接收进程。进程运行在用户空间,进程间通信过程中,需要用户空间与内核空间之间大量的数据拷贝开销和内核大量的网络栈开销,造成通信速度慢、系统消耗大。

技术实现思路

[0004]本公开的实施方式期望提供一种进程间通信方法、系统、存储介质和计算机设备,能够减少进程间通信所需的数据拷贝开销,并进一步避免内核的网络栈开销,以实现提高进程间通信速度,减少系统消耗。
[0005]根据本公开的一个方面,提供一种进程间通信方法,应用于共享内核的进程,包括:消息发送进程将待发送的数据报文发送至共享内存,并向消息接收进程发送通知报文,所述通知报文携带所述数据报文存储于所述共享内存中的地址信息;所述内核响应于所述通知报文,将所述通知报文传输至所述消息接收进程;所述消息接收进程解析所述通知报文以获得所述地址信息,并根据所述地址信息自所述共享内存中获取所述数据报文。
[0006]在本公开的一示例性实施例中,所述内核中部署有eBPF应用;所述将所述通知报文传输至所述消息接收进程,包括:所述内核在所述消息发送进程与所述消息接收进程之间建立Socket连接,生成分别对接所述消息发送进程和所述消息接收进程的Socket接口;所述eBPF应用自对接所述消息发送进程的Socket接口劫持所述通知报文,并将所述通知报文传输至对接所述消息接收进程的Socket接口。
[0007]在本公开的一示例性实施例中,所述内核还生成分别对应所述消息发送进程和所述消息接收进程的Socket接口的Socket句柄;所述将所述通知报文传输至对接所述消息接收进程的Socket接口,包括:解析所述通知报文,获得所述通知报文中包含的接口地址;根据所述接口地址确定目标Socket句柄;将所述通知报文传输至所述目标Socket句柄对应的目标Socket接口,所述目标Socket接口为对接所述消息接收进程的Socket接口。
[0008]在本公开的一示例性实施例中,每个所述Socket句柄中分别存储所述Socket连接的本地接口地址和对端接口地址,所述接口地址包括源接口地址和目的接口地址;所述根据所述接口地址确定目标Socket句柄,包括:获取以所述目的接口地址为本地接口地址、且以所述源接口地址为对端接口地址的Socket句柄,确定为所述目标Socket句柄。
[0009]在本公开的一示例性实施例中,所述将所述通知报文传输至所述消息接收进程,
包括:在所述消息发送进程与所述消息接收进程之间建立Socket连接,生成分别对接所述消息发送进程和所述消息接收进程的Socket接口;调用网络协议栈,通过所述网络协议栈将所述通知报文由对接所述消息发送进程的Socket接口传输至对接所述消息接收进程的Socket接口。
[0010]在本公开的一示例性实施例中,所述地址信息包括所述数据报文存储于所述共享内存中的首地址和所述数据报文的长度。
[0011]在本公开的一示例性实施例中,所述消息发送进程和所述消息接收进程互为业务进程和所述业务进程伴生的Sidecar进程。
[0012]根据本公开的一个方面,提供一种进程间通信系统,应用于共享内核的进程,包括:消息发送进程,用于将待发送的的数据报文发送至共享内存,并向消息接收进程发送通知报文,所述通知报文携带所述数据报文存储于所述共享内存中的地址信息;所述内核,用于响应于所述通知报文,将所述通知报文传输至所述消息接收进程;所述消息接收进程,用于解析所述通知报文以获得所述地址信息,并根据所述地址信息自所述共享内存中获取所述数据报文。
[0013]根据本公开的一个方面,提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述任意实施例所述的进程间通信方法。
[0014]根据本公开的一个方面,提供一种计算机设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令,来执行如上述任意实施例所述的进程间通信方法。
[0015]本公开实施方式的进程间通信方法、系统、存储介质和计算机设备,通过消息发送进程将用于交换的数据存储至共享内存中,使得向消息接收进程发送的请求仅需携带数据存储于共享内存中的地址信息,无需携带完整数据,以减少通信过程中用户空间与内存空间之间的数据拷贝量,从而减少数据拷贝开销;进一步地,还可通过内核中部署的eBPF应用,对Socket系统调用进行劫持,使得请求的传递绕过内核的网络栈,通过eBPF应用将请求直接自消息发送进程的Socket接口传递至消息接收进程的Socket接口,以避免网络栈开销。从而,本公开的进程间通信方案,能够减少数据拷贝开销,并能够进一步避免网络栈开销,实现提高进程间通信速度,减少系统消耗。
附图说明
[0016]通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
[0017]图1示出微服务架构中两个业务进程之间的通信过程示意图;
[0018]图2示出服务网格架构的流量处理过程示意图;
[0019]图3示出服务网格架构中两个业务进程之间的通信过程示意图;
[0020]图4示意性地示出根据本公开一种实施方式的进程间通信方法的流程示意图;
[0021]图5示意性地示出根据本公开一种实施方式的业务进程向Sidecar进程发送数据的通信过程示意图;
[0022]图6示意性地示出根据本公开一种实施方式的Sidecar进程向业务进程发送数据
的通信过程示意图;
[0023]图7示意性地示出根据本公开一种实施方式的内核将通知报文传输至消息接收进程的流程示意图;
[0024]图8示意性地示出根据本公开又一种实施方式的业务进程向Sidecar进程发送数据的通信过程示意图;
[0025]图9示意性地示出根据本公开又一种实施方式的Sidecar进程向业务进程发送数据的通信过程示意图;
[0026]图10示意性地示出根据本公开一种实施方式的进程间通信系统的模块架构图;
[0027]图11示意性地示出根据本公开一种实施方式的存储介质的示意图;
[0028]图12示意性地示出根据本公开一种实施方式的计算机设备的模块架构图。
[0029]在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
[0030]下面将参考若干示例性实施方式来描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种进程间通信方法,其特征在于,应用于共享内核的进程,包括:消息发送进程将待发送的数据报文发送至共享内存,并向消息接收进程发送通知报文,所述通知报文携带所述数据报文存储于所述共享内存中的地址信息;所述内核响应于所述通知报文,将所述通知报文传输至所述消息接收进程;所述消息接收进程解析所述通知报文以获得所述地址信息,并根据所述地址信息自所述共享内存中获取所述数据报文。2.如权利要求1所述的进程间通信方法,其特征在于,所述内核中部署有eBPF应用;所述将所述通知报文传输至所述消息接收进程,包括:所述内核在所述消息发送进程与所述消息接收进程之间建立Socket连接,生成分别对接所述消息发送进程和所述消息接收进程的Socket接口;所述eBPF应用自对接所述消息发送进程的Socket接口劫持所述通知报文,并将所述通知报文传输至对接所述消息接收进程的Socket接口。3.如权利要求2所述的进程间通信方法,其特征在于,所述内核还生成分别对应所述消息发送进程和所述消息接收进程的Socket接口的Socket句柄;所述将所述通知报文传输至对接所述消息接收进程的Socket接口,包括:解析所述通知报文,获得所述通知报文中包含的接口地址;根据所述接口地址确定目标Socket句柄;将所述通知报文传输至所述目标Socket句柄对应的目标Socket接口,所述目标Socket接口为对接所述消息接收进程的Socket接口。4.如权利要求3所述的进程间通信方法,其特征在于,每个所述Socket句柄中分别存储所述Socket连接的本地接口地址和对端接口地址,所述接口地址包括源接口地址和目的接口地址;所述根据所述接口地址确定目标Socket句柄,包括:获取以所述目的接口地址为本地接口地址、且以所...

【专利技术属性】
技术研发人员:王佰平裴斐冯常健陈谔方志恒
申请(专利权)人:杭州朗和科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1