CN110659143A - 一种容器间的通讯方法、装置及电子设备 - Google Patents

一种容器间的通讯方法、装置及电子设备 Download PDF

Info

Publication number
CN110659143A
CN110659143A CN201910743463.XA CN201910743463A CN110659143A CN 110659143 A CN110659143 A CN 110659143A CN 201910743463 A CN201910743463 A CN 201910743463A CN 110659143 A CN110659143 A CN 110659143A
Authority
CN
China
Prior art keywords
container
message
host
virtual address
containers
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.)
Granted
Application number
CN201910743463.XA
Other languages
English (en)
Other versions
CN110659143B (zh
Inventor
李坤颖
孔令晶
王辉静
唐琪
汪卫明
刘君尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dragon Totem Technology Hefei Co ltd
Xi'an Jianxing Electronic Information Technology Co ltd
Original Assignee
Shenzhen Institute of Information Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Information Technology filed Critical Shenzhen Institute of Information Technology
Priority to CN201910743463.XA priority Critical patent/CN110659143B/zh
Publication of CN110659143A publication Critical patent/CN110659143A/zh
Application granted granted Critical
Publication of CN110659143B publication Critical patent/CN110659143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本申请适用于通讯技术领域,尤其涉及一种容器间的通讯方法、装置及电子设备,包括:将第一容器所要发送的消息写入到共享内存;将所述消息在共享内存中的虚拟地址传送给第二容器;根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。通过共享内存的方式进行容器间的相互通讯,整个消息收发的过程都不经过操作系统的内核态,且不存在消息的拷贝,提高了通讯效率。

Description

一种容器间的通讯方法、装置及电子设备
技术领域
本申请属于通讯技术领域,尤其涉及一种容器间的通讯方法、装置及电子设备。
背景技术
容器是继虚拟机之后,实现应用封装的一种更加高效的技术,目前开发逐步得到推广,使用容器技术可以轻松地打包应用以及依赖包到一个可移植的容器中,将应用变成一种标准化的、可移植的、自管理的组件,从而实现应用系统的集中化、专业化的管理以及轻松地迁移和扩展,容器间的网络通讯主要分为两大方面,位于同一主机的容器间的相互通讯和位于不同的主机的容器间的相互通讯。
目前对于位于同一主机的两个容器间的相互通讯,通常需要经过宿主机的模拟网桥进行传递,对于位于不同主机的两个容器间的相互通讯,中间需要经过宿主机的模拟网桥、宿主机的物理网卡等进行传递,这种通讯方式都需要经过多个步骤,且消息的发送都需要进入操作系统的内核,效率较低。
发明内容
本发明实施例提供了一种容器间的通讯方法、装置及电子设备,旨在解决目前容器间的通讯方式需要进入系统的内核,效率较低的技术问题。
第一方面,本申请实施例提供了一种容器间的通讯方法,包括:
将第一容器所要发送的消息写入到共享内存;
将所述消息在共享内存中的虚拟地址传送给第二容器;
根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
第二方面,本申请实施例提供了一种容器间的通讯装置,包括:
写入模块,用于将第一容器所要发送的消息写入到共享内存;
第一传送模块,用于将所述消息在共享内存中的虚拟地址传送给第二容器;
访问模块,用于根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
第三方面,本申请实施例提供了一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述第一方面所述方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述第一方面所述方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的容器间的通讯方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:通过使源容器发送消息;将接收到的消息写入到共享内存中;将所述消息在共享内存中的虚拟地址传送给目标容器;使所述目标容器接收所述虚拟地址,并访问所述虚拟地址指向的消息,这样通过共享内存传递消息的时候,不需要把整个消息发送到目标容器,只需要传递消息的虚拟地址即可,目标容器接收到地址后,直接访问虚拟地址指向的消息,整个消息收发的过程都不经过操作系统的内核态,且不存在消息的拷贝,提高了通讯效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种容器间的通讯方法的实现流程图;
图2是本发明实施例提供的一种容器间的通讯方法的应用场景示意图;
图3是本发明实施例提供的另一种容器间的通讯方法的实现流程图;
图4是本发明实施例提供的另一种容器间的通讯方法中S305的实现流程图;
图5是本发明实施例提供的另一种容器间的通讯方法的应用场景示意图;
图6是本发明实施例提供的一种容器间的通讯装置的示意图;
图7是本发明实施例提供的一种容器间的通讯设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
请参见图1,图1是本发明实施例提供的一种容器间的通讯方法的实现流程图,本实施例中容器间的通讯方法的执行主体为终端,终端包括但不限于台式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等终端。如图所述的容器间的通讯方法可包括:
S101:将第一容器所要发送的消息写入到共享内存。
所述第一容器是指发送消息的源容器,先由第一容器发送消息,然后将第一容器所要发送的消息写入到第一容器所在主机的共享内存中,从而产生一个存储所述消息的虚拟地址。
S102:将所述消息在共享内存中的虚拟地址传送给第二容器。
由于第一容器和第二容器位于同一个主机,所以第一容器和第二容器间使用的共享内存映射出来的虚拟地址一致,这样在第一容器和第一容器之间通过共享内存传递消息的时候,不需要把整个消息的内容传送到第二容器,只需要将所述消息在共享内存中的虚拟地址传递给第二容器即可,不需要经过操作系统的虚拟网桥,可以避免消息收发经过操作系统的内核,消息的收发不需要拷贝,提高了通讯效率。
S103:根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
第二容器获取到所述消息在共享内存中的虚拟地址,第二容器得到访问所述虚拟地址的访问指令,第二容器根据所述访问指令访问所述虚拟地址指向的消息。
进一步地,在步骤S101之前,还包括:将消息发送请求发送给第一容器。
进一步地,为了能够较好地实现容器间的相互通讯,在步骤S101之前,还包括:预先为第一容器和第二容器设定网络带宽的控制规则,具体为:在将消息发送请求发送给第一容器之前,即容器间不进行通讯时,为第一容器和第二容器设置第一阈值的网络带宽,第一阈值为只能满足容器接收消息发送请求,而不能进行容器间通讯的网络带宽,在将消息发送请求发送给第一容器之后,即容器间要进行通讯,则为第一容器和第二容器设置大于等于第二阈值的网络带宽,第二阈值为能够使容器间进行消息通讯的网络带宽。在此,对于第一阈值和第二阈值的数值不做具体限定,根据实际情况而定。这样实现了网络的合理利用,可以节省能源,还能使容器间能够流畅地进行通讯。
应理解,容器间的网络通讯包括位于同一主机的容器间的相互通讯和位于不同主机的容器间的相互通讯。当容器间的网络通讯为位于同一主机的容器间的相互通讯时,所述第一容器为源容器,所述第二容器为目标容器,即源容器和目标容器位于同一主机,当容器间的网络通讯为位于不同主机的容器间的相互通讯时,所述第一容器为源容器,所述第二容器为位于第一主机的第一专有收发消息容器,目标容器位于第二主机,在第二主机内还存在第二专有收发消息容器。
请参见图2,图2为当容器间的网络通讯为位于同一主机的容器间的相互通讯的应用场景示意图,容器210和容器220部署在同一主机200上,这两个容器进行通讯,直接采用共享内存的方式,也就是说,容器210发送消息,将容器210发送的消息写入到共享内存230中,将所述消息在共享内存230中的虚拟地址传送给容器220,容器220根据接收到的虚拟地址访问所述虚拟地址指向的消息。
请参见图3,图3是本发明实施例提供的另一种容器间的通讯方法的实现流程图,本实施例中容器间的通讯方法的执行主体为终端,终端包括但不限于台式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等终端。当第一容器和第二容器位于第一主机,且目标容器位于第二主机时,所述第二容器为第一专有收发消息容器,也就是说,当容器间的网络通讯为位于不同主机的容器间的相互通讯时,在步骤S103之后,所述容器间的通讯方法还包括:
S304:通过所述第一专有收发消息容器将所述消息发送至第二主机的第二专有收发消息容器。
每个物理主机上都部署一个专有收发消息容器,在第一主机上部署的专有收发消息容器为第一专有收发容器,在第二主机上部署的专有收发消息容器为第二专有收发容器,第一专有收发容器和第二专有收发容器间采用DPDK(Data Plane Development Kit)进行消息的报文处理,DPDK是一种网络应用数据包的高性能处理技术,其工作在用户层,取代传统Linux系统中的网络数据报文处理。专有收发消息容器采用DPDK进行消息的跨主机通讯,这样可以提高消息报文的收发效率。
另外,通过采用DPDK将消息从第一主机发送至第二主机,而无需经过两个主机的物理机网卡,进一步提高了通讯效率。
S305:通过所述消息在第二主机中的共享内存的虚拟地址传送所述消息至目标容器。
具体地,步骤S305又包括S3051-S3053,图4为S305的具体实现流程图。
S3051:将所述第二主机的第二专有收发消息容器接收到的消息写入到第二主机的共享内存。
第二主机的第二专有收发容器接收到由第一主机的第一专有收发容器发送的消息,将接收到的消息写入第二主机的共享内存,在第二主机的共享内存中产生一个存储所述消息的虚拟地址。
S3052:将所述消息在所述第二主机的共享内存中的虚拟地址传送给所述消息至目标容器。
由于第二专有收发消息容器和目标容器都位于第二主机,那么,第二专有收发消息容器和目标容器间使用的第二主机内的共享内存所映射出来的虚拟地址一致,这样在第二专有收发消息容器和目标容器之间通过共享内存传递消息的时候,不需要将整个消息的内容传送到目标容器,只需要将所述消息在第二主机内的共享内存中的虚拟地址传递给目标容器即可,不需要经过操作系统的虚拟网桥,可以避免消息收发经过操作系统的内核,消息的收发不需要拷贝,进一步提高了通讯效率。
S3053:根据所述目标容器接收的所述虚拟地址,指示目标容器访问所述虚拟地址指向的消息。
目标容器获取到所述消息在第二主机的共享内存中的虚拟地址,目标容器得到访问所述虚拟地址的访问指令,根据所述访问指令访问所述虚拟地址指向的消息。
进一步地,在步骤S304之前,还包括:
判断目标容器和第一容器是否位于同一主机。
所述判断目标容器和第一容器是否位于同一主机,具体为:
获取所述第一容器所在主机的IP地址;
获取所述目标容器所在主机的IP地址;
比较所述第一容器所在主机的IP地址与所述目标容器所在主机的IP地址是否一致;
如果一致,则表明目标容器和第一容器位于同一主机,如果不一致,则表明目标容器和第一容器位于不同的主机。
由于每个主机的IP地址不同,所以如果第一容器和目标容器所在主机的IP地址相同,则表明目标容器和第一容器位于同一主机,如果不同,则表明目标容器和第一容器位于不同的主机。当目标容器和第一容器位于同一主机时,第一容器为源容器,第二容器为目标容器;当目标容器和第一容器位于不同主机时,第一容器为源容器,第二容器为第一专有收发消息容器,第一容器和第二容器位于第一主机,目标容器位于第二主机,第二主机上还有第二专有收发消息容器。
进一步地,为了能够确保获得宿主机的IP地址,当未获取到所述第一容器所在主机的IP地址或所述目标容器所在主机的IP地址时,向所述地址管理装置发送错误提示信息。
进一步地,为了方便以后判断第一容器和目标容器是否位于同一主机,将获取的所述第一容器所在主机的IP地址进行储存,从而避免重复查询第一容器所在主机的IP地址,节省了操作步骤。
应理解,容器间的通讯是相互的,为了便于说明,上述实施例中都是以第一容器作为源容器、单向通讯进行描述的,而如果进行与上述实施例相反方向的通讯时,即当第一容器作为目标容器时,其通讯方法与上述实施例中的方法相同,在此不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
请参见图5,图5为当容器间的网络通讯为位于不同主机的容器间的相互通讯的产品示意图,容器410和专有收发消息容器420位于第一主机400上,容器510和专有收发消息容器520位于第二主机500上,容器410和容器510进行通讯时,容器410发送消息,将容器410发送的消息写入到共享内存430中,将所述消息在共享内存430中的虚拟地址传送给专有收发消息容器420,专有消收发容器420访问所述虚拟地址指向的消息,专有收发消息容器420将消息发送给专有收发消息容器520,将专有收发消息容器520接收到的消息写入共享内存530中,将所述消息在共享内存530中的虚拟地址传送给容器510,容器510访问虚拟地址指向的消息,整个消息收发的过程都不经过操作系统的内核态,且不存在消息的拷贝,极大程度地提高了通讯效率。
请参阅图6,图6是本发明一实施例提供的一种容器间的通讯装置的示意图。包括的各单元用于执行图1~图5对应的实施例中的各步骤。具体请参阅图1~图5各自对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图6,容器间的通讯装置6包括:
写入模块610,用于将第一容器所要发送的消息写入到共享内存。
所述第一容器是指发送消息的源容器,先由第一容器发送消息,然后将第一容器所要发送的消息写入到第一容器所在主机的共享内存中,从而产生一个存储所述消息的虚拟地址。
第一传送模块620,用于将所述消息在共享内存中的虚拟地址传送给第二容器。
由于第一容器和第二容器位于同一个主机,所以第一容器和第二容器间使用的共享内存映射出来的虚拟地址一致,这样在第一容器和第一容器之间通过共享内存传递消息的时候,不需要把整个消息的内容传送到第二容器,只需要将所述消息在共享内存中的虚拟地址传递给第二容器即可,不需要经过操作系统的虚拟网桥,可以避免消息收发经过操作系统的内核,消息的收发不需要拷贝,提高了通讯效率。
访问模块630,用于根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
第二容器获取到所述消息在共享内存中的虚拟地址,第二容器得到访问所述虚拟地址的访问指令,第二容器根据所述访问指令访问所述虚拟地址指向的消息。
进一步地,容器间的通讯装置6,还包括请求模块,用于将消息发送请求发送给第一容器。
进一步地,为了能够较好地实现容器间的相互通讯,容器间的通讯装置6,还包括:预先设置模块,用于预先为第一容器和第二容器设定网络带宽的控制规则,具体为:在将消息发送请求发送给第一容器之前,即容器间不进行通讯时,为第一容器和第二容器设置第一阈值的网络带宽,第一阈值为只能满足容器接收消息发送请求的网络带宽,在将消息发送请求发送给第一容器之后,即容器间要进行通讯,则为第一容器和第二容器设置大于等于第二阈值的网络带宽,第二阈值为能够使容器间进行消息通信的网络带宽。在此,对于第一阈值和第二阈值的数值不做具体限定,根据实际情况做具体的限定。这样实现了网络的合理利用,节省能源,还能使容器间能够流畅地进行通讯。
应理解,容器间的网络通讯包括位于同一主机的容器间的相互通讯和位于不同主机的容器间的相互通讯。当容器间的网络通讯为位于同一主机的容器间的相互通讯时,所述第一容器为源容器,所述第二容器为目标容器,即源容器和目标容器位于同一主机,当容器间的网络通讯为位于不同主机的容器间的相互通讯时,所述第一容器为源容器,所述第二容器为位于第一主机的第一专有收发消息容器,目标容器位于第二主机,在第二主机内还存在第二专有收发消息容器。
当第一容器和第二容器位于第一主机,且目标容器位于第二主机时,所述第二容器为第一专有收发消息容器,也就是说,当容器间的网络通讯为位于不同主机的容器间的相互通讯时,所述容器间的通讯装置还包括:
发送模块,用于通过所述第一专有收发消息容器将所述消息发送至第二主机的第二专有收发消息容器。
每个物理主机上都部署一个专有收发消息容器,在第一主机上部署的专有收发消息容器为第一专有收发容器,在第二主机上部署的专有收发消息容器为第二专有收发容器,第一专有收发容器和第二专有收发容器间采用DPDK(Data Plane Development Kit)进行消息的报文处理,DPDK是一种网络应用数据包的高性能处理技术,其工作在用户层,取代传统Linux系统中的网络数据报文处理。专有收发消息容器采用DPDK进行消息的跨主机通讯,这样可以提高消息报文的收发效率。
另外,通过采用DPDK将消息从第一主机发送至第二主机,而无需经过两个主机的物理机网卡,进一步提高了通讯效率。
第二传送模块:通过所述消息在第二主机中的共享内存的虚拟地址传送所述消息至目标容器。
进一步,所述第二传送模块又包括:
写入单元,用于将所述第二主机的第二专有收发消息容器接收到的消息写入到第二主机的共享内存。
第二主机的第二专有收发容器接收到由第一主机的第一专有收发容器发送的消息,将接收到的消息写入第二主机的共享内存,在第二主机的共享内存中产生一个存储所述消息的虚拟地址。
传送单元,用于将所述消息在所述第二主机的共享内存中的虚拟地址传送给所述消息至目标容器。
由于第二专有收发消息容器和目标容器都位于第二主机,那么,第二专有收发消息容器和目标容器间使用的第二主机内的共享内存所映射出来的虚拟地址一致,这样在第二专有收发消息容器和目标容器之间通过共享内存传递消息的时候,不需要将整个消息的内容传送到目标容器,只需要将所述消息在第二主机内的共享内存中的虚拟地址传递给目标容器即可,不需要经过操作系统的虚拟网桥,可以避免消息收发经过操作系统的内核,消息的收发不需要拷贝,进一步提高了通讯效率。
访问单元,用于根据所述目标容器接收的所述虚拟地址,指示目标容器访问所述虚拟地址指向的消息。
目标容器获取到所述消息在第二主机的共享内存中的虚拟地址,目标容器得到访问所述虚拟地址的访问指令,根据所述访问指令访问所述虚拟地址指向的消息。
进一步地,容器间的通讯装置6还包括:
判断模块,用于判断目标容器和第一容器是否位于同一主机。
进一步所述判断模块,又包括:
第一获取单元,用于获取所述第一容器所在主机的IP地址。
第二获取单元,用于获取所述目标容器所在主机的IP地址。
比较单元,用于比较所述第一容器所在主机的IP地址与所述目标容器所在主机的IP地址是否一致;
如果一致,则表明目标容器和第一容器位于同一主机,如果不一致,则表明目标容器和第一容器位于不同的主机。
由于每个主机的IP地址不同,所以如果第一容器和目标容器所在主机的IP地址相同,则表明目标容器和第一容器位于同一主机,如果不同,则表明目标容器和第一容器位于不同的主机。当目标容器和第一容器位于同一主机时,第一容器为源容器,第二容器为目标容器;当目标容器和第一容器位于不同主机时,第一容器为源容器,第二容器为第一专有收发消息容器,第一容器和第二容器位于第一主机,目标容器位于第二主机,第二主机上还有第二专有收发消息容器。
进一步地,为了能够确保获得宿主机的IP地址,容器间的通讯装置6还包括:错误指示模块,用于当未获取到所述第一容器所在主机的IP地址或所述目标容器所在主机的IP地址时,向所述地址管理装置发送错误提示信息。
进一步地,为了方便以后判断第一容器和目标容器是否位于同一主机,容器间的通讯装置6还包括:储存模块,用于将获取的所述第一容器所在主机的IP地址进行储存,从而避免重复查询第一容器所在主机的IP地址,节省了操作步骤。
图7是本发明一实施例提供的容器间的通讯装置/电子设备的示意图。如图7所示,该实施例的容器间的通讯装置/电子设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72,例如将第一容器所要发送的消息写入共享内存的写入程序。所述处理器70执行所述计算机程序72时实现上述各个通讯方法实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块610至630的功能。
示例性的,所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述容器间的通讯装置/电子设备7中的执行过程。例如,所述计算机程序72可以被分割成写入模块、第一传送模块和访问模块,各模块具体功能如下:
写入模块,用于将第一容器所要发送的消息写入到共享内存。
第一传送模块,用于将所述消息在共享内存中的虚拟地址传送给第二容器。
访问模块,用于根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
所述容器间的通讯装置/电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述容器间的通讯装置/终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是容器间的通讯装置/电子设备7的示例,并不构成对容器间的通讯装置/电子设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述容器间的通讯装置/终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述容器间的通讯装置/电子设备7的内部存储单元,例如容器间的通讯装置/电子设备7的硬盘或内存。所述存储器71也可以是所述容器间的通讯装置/电子设备7的外部存储设备,例如所述容器间的通讯装置/电子设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述容器间的通讯装置/电子设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述容器间的通讯装置/终端设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种容器间的通讯方法,其特征在于,用于通讯的容器包括第一容器和第二容器,所述容器间的通讯方法包括:
将第一容器所要发送的消息写入到共享内存;
将所述消息在共享内存中的虚拟地址传送给第二容器;
根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
2.如权利要求1所述的容器间的通讯方法,其特征在于,当第一容器和第二容器位于第一主机,且目标容器位于第二主机时,所述第二容器为第一专有收发消息容器,在所述根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息的步骤之后,所述容器间的通讯方法还包括:
通过所述第一专有收发消息容器将所述消息发送至第二主机的第二专有收发消息容器,通过所述消息在第二主机中的共享内存的虚拟地址传送所述消息至目标容器。
3.如权利要求2所述的容器间的通讯方法,其特征在于,在通过所述第一专有收发消息容器将所述消息发送至第二主机的第二专有收发消息容器,通过所述消息在第二主机中的共享内存的虚拟地址传送所述消息至目标容器的步骤之前,所述方法还包括:
判断目标容器和第一容器是否位于同一主机。
4.如权利要求3所述的容器间的通讯方法,其特征在于,所述判断目标容器和第一容器是否位于同一主机,具体为:
获取所述第一容器所在主机的IP地址;
获取所述目标容器所在主机的IP地址;
比较所述第一容器所在主机的IP地址与所述目标容器所在主机的IP地址是否一致;
如果一致,则表明目标容器和第一容器位于同一主机,如果不一致,则表明目标容器和第一容器位于不同的主机。
5.如权利要求3所述的容器间的通讯方法,其特征在于,将获取的所述第一容器所在主机的IP地址进行储存。
6.如权利要求2所述的容器间的通讯方法,其特征在于,所述通过所述第一专有收发消息容器将所述消息发送至第二主机的第二专有收发消息容器,具体为:
通过所述第一专有收发消息容器采用DPDK将所述消息发送至第二主机的第二专有收发消息容器。
7.如权利要求2所述的容器间的通讯方法,其特征在于,所述通过所述消息在第二主机中的共享内存的虚拟地址传送所述消息至目标容器,包括:
将所述第二主机的第二专有收发消息容器接收到的消息写入到第二主机的共享内存;
将所述消息在所述第二主机的共享内存中的虚拟地址传送给所述消息至目标容器;
根据所述目标容器接收的所述虚拟地址,指示目标容器访问所述虚拟地址指向的消息。
8.一种容器间的通讯装置,其特征在于,包括:
写入模块,用于将第一容器所要发送的消息写入到共享内存;
第一传送模块,用于将所述消息在共享内存中的虚拟地址传送给第二容器;
访问模块,用于根据所述第二容器接收的所述虚拟地址,指示第二容器访问所述虚拟地址指向的消息。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
CN201910743463.XA 2019-08-13 2019-08-13 一种容器间的通讯方法、装置及电子设备 Active CN110659143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910743463.XA CN110659143B (zh) 2019-08-13 2019-08-13 一种容器间的通讯方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910743463.XA CN110659143B (zh) 2019-08-13 2019-08-13 一种容器间的通讯方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110659143A true CN110659143A (zh) 2020-01-07
CN110659143B CN110659143B (zh) 2022-09-09

Family

ID=69037622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910743463.XA Active CN110659143B (zh) 2019-08-13 2019-08-13 一种容器间的通讯方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110659143B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022160714A1 (zh) * 2021-01-28 2022-08-04 华为技术有限公司 一种通信方法、装置以及系统
CN115277558A (zh) * 2022-07-29 2022-11-01 中国电信股份有限公司 报文发送方法、装置、计算机存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
CN105491123A (zh) * 2015-12-04 2016-04-13 北京航空航天大学 容器间通信方法及装置
CN107678835A (zh) * 2017-09-30 2018-02-09 东软集团股份有限公司 一种数据传输方法及系统
CN108270856A (zh) * 2018-01-15 2018-07-10 赛特斯信息科技股份有限公司 基于Docker技术的逻辑CPE设备的虚拟化管理系统及其配置方法
CN108694092A (zh) * 2018-05-11 2018-10-23 华中科技大学 一种面向并行应用的容器通信方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
CN105491123A (zh) * 2015-12-04 2016-04-13 北京航空航天大学 容器间通信方法及装置
CN107678835A (zh) * 2017-09-30 2018-02-09 东软集团股份有限公司 一种数据传输方法及系统
CN108270856A (zh) * 2018-01-15 2018-07-10 赛特斯信息科技股份有限公司 基于Docker技术的逻辑CPE设备的虚拟化管理系统及其配置方法
CN108694092A (zh) * 2018-05-11 2018-10-23 华中科技大学 一种面向并行应用的容器通信方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AMIT CHAHAR.ET.AL.: "Docker Management Using Libvirt API", 《SCIENTIFIC JOURNAL OF IMPACT FACTOR (SJIF)》 *
沙行勉等: "面向同驻虚拟机的高效共享内存文件系统", 《计算机学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022160714A1 (zh) * 2021-01-28 2022-08-04 华为技术有限公司 一种通信方法、装置以及系统
CN115277558A (zh) * 2022-07-29 2022-11-01 中国电信股份有限公司 报文发送方法、装置、计算机存储介质及电子设备

Also Published As

Publication number Publication date
CN110659143B (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
CN110888827B (zh) 数据传输方法、装置、设备及存储介质
CN108268328B (zh) 数据处理装置及计算机
US8990451B2 (en) Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN110659143B (zh) 一种容器间的通讯方法、装置及电子设备
CN112256460A (zh) 进程间通信方法、装置、电子设备及计算机可读存储介质
CN105677491A (zh) 一种数据传输方法及装置
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
US9053092B2 (en) System authorizing direct data transfers between memories of several components of that system
US10176133B2 (en) Smart device with no AP
CN112422485B (zh) 一种传输控制协议的通信方法及装置
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
CN110990116A (zh) 在智能网卡和虚拟机之间传输数据的方法、装置和系统
CN116450554A (zh) 中断处理方法、根复合体设备及电子设备
CN113422792A (zh) 数据传输方法、装置、电子设备及计算机存储介质
CN115269174A (zh) 一种数据传输方法、数据处理方法及相关产品
CN108804362A (zh) 串口批量数据传输方法、装置及存储介质
CN117544579A (zh) 数据传输方法、装置、设备及介质
CN117806810A (zh) 一种数据处理方法和相关设备
CN114390003A (zh) 用于数据传输控制的方法、装置及终端
CN117971135A (zh) 存储设备的访问方法、装置、存储介质和电子设备
CN115858434A (zh) 一种计算设备及请求处理方法
CN116263728A (zh) 用于向持久性存储器进行写入的系统、方法和装置

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230828

Address after: Room 3002, Building 5, No. 3 Chang'an Street, Beilin District, Xi'an City, Shaanxi Province, 710000

Patentee after: Xi'an Jianxing Electronic Information Technology Co.,Ltd.

Address before: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee before: Dragon totem Technology (Hefei) Co.,Ltd.

Effective date of registration: 20230828

Address after: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee after: Dragon totem Technology (Hefei) Co.,Ltd.

Address before: 518000 No. 2188 Longxiang Avenue, Longgang District, Shenzhen City, Guangdong Province

Patentee before: SHENZHEN INSTITUTE OF INFORMATION TECHNOLOGY

TR01 Transfer of patent right