一种面向并行应用的容器通信方法和系统技术方案

技术编号:19240237 阅读:30 留言:0更新日期:2018-10-24 03:51
本发明专利技术涉及一种面向并行应用的容器通信方法和系统,该方法包括:第一容器中的第一进程需要和第二容器中的第二进程进行通信且第一和第二容器处于同一个宿主机上的情况下,建立一个不同于基于TCP协议的第一信道的第二信道,第一容器将通信数据发送到第一容器和/或第二容器在宿主机上申请的共享内存区域并将通信数据的元数据通过第一信道发送给第二容器,在所述第二进程根据接收到的所述元数据确认接收所述通信数据的情况下,通过第二信道将所述通信数据传递给第二容器且通过第一信道将接收数据的确认消息反馈给第一进程。

【技术实现步骤摘要】
一种面向并行应用的容器通信方法和系统
本专利技术涉及通信领域,尤其涉及一种面向并行应用的容器通信方法和系统。
技术介绍
随着微型计算机处理器技术的飞速发展,过去十年间,处理器的计算能力按照“摩尔定律”所描述的速度在进行提高。目前,单台服务器能够提供的处理能够远超过去的服务器处理能力。而应用程序对计算的需求却没有增长得如此迅速,因此导致了现有的计算机处理能力普遍存在剩余的情况。为了进一步提高计算机处理资源的利用率,虚拟化技术被人们所提出。通过在同一个物理机上运行多个虚拟机,能够明显提高服务器的处理能力和资源利用率,同时也带来了在线迁移、动态部署、负载均衡等优势。随着技术的不断发展,科研单位和企业对于高性能计算的需求量不断增长,而高性能计算所需计算资源却因为不同单位的需求差异巨大,很多用户都只有在进行实际高性能计算时才能确定具体的计算资源需求,且不同情况对于计算需求量也会有比较大的差异,而科研单位的自建高性能集群有时无法满足用户的资源需求。还有一些单位仅仅暂时需要高性能计算计算资源,自己构建高性能计算集群的成本高、周期长。针对以上两种典型情况,使用云计算服务商提供的高性能计算虚拟服务器或虚拟实例可以很好地解决资源临时短缺和集群构建成本高、周期长的问题。然而,在使用虚拟化的物理机系统中,往往为了提高资源的利用率,在物理机上运行多台虚拟机,导致虚拟设备的数量远远超过物理机上资源的数量和能够承受的范围,导致了严重的资源过载现象。资源过载引起资源请求得不到及时响应的情况,直接导致高性能并行应用的计算速度受到影响。众所周知,典型的高性能并行应用都采用了基于消息传递的编程模型MPI(MessagePassingInterface)。传统物理机情况下,为了优化同一主机上的多个MPI进程效率,MPI库提供了SharedMemory和CrossMemoryAttach两种进程消息传递通道来优化相同主机上不同进程间消息的传递效率。而在云计算环境下,运行在同一宿主机上面的虚拟机或容器上面的不同MPI进程之间只能采用Socket即网络通信的方式进行消息传递,进程之间无法使用MPI库中提供的SharedMemory和CrossMemoryAttach通道进行快速的进程通信,使得消息传递的速度和效率明显降低,严重影响了高性能并行应用的计算速度。针对高性能并行应用在容器虚拟化环境中存在的进程通信效率低的问题,有研究者提出了修改MPI库,并让MPI库能够检测到处于同一主机上相邻容器的方法,该方法能够将默认情况下不同容器MPI进程间的通信方式从网络通道修改为采用SharedMemory通信的模式,在一定程度上提高了高性能并行应用的计算效率。但是该方法需要修改现有的MPI部署环境,且修改MPI环境之后,还需要修改MPI应用的源代码才能支持这种优化。与此同时,若其他未采用MPI编程模型的高性能并行应用的通信效率将得不到任何优化,即该方法仅限于MPI编程模型,不能提高在容器中运行的其他应用例如事务型应用的通信效率。有研究者提出了一种基于共享内存的容器通信方法,该方法提供了一种基于客户服务器模式的通信框架,使用该框架,应用必须修改应用的源代码,并且基于该通信框架进行编译,才能使用共享内存的方式进行容器通信,尽管该方式能够在一定程度上提高了同主机的通信效率,但是该方法的兼容性和可操作性不强,且现有的代码很多,改动成本大,因此实用性不强。还有研究者提供了另外一种基于共享内存的容器通信方式,该方法通过使用网络共享文件系统中共享文件的方式来进行容器之间的消息传递和协商,尽管该方法最终通过使用共享内存的形式进行容器间的数据传输,但是由于建立共享内存区域、数据拷贝、共享内存区域释放等这些控制信息的传递时通过文件来进行传递的,进行通信的容器双方均需要打开文件,读取或写入文件,导致整个通信过程建立的效率非常低,不仅需要进行至少两次的用户态与内核态之间的切换,而且还可能需要进行内存空间的申请,导致整个通信系统的效率并没有得到很大提高。公开号为CN105847108A的中国专利文献公开了一种容器间的通信方法及装置。该方法包括:第一虚拟网桥向子网内除第一虚拟网桥外的第二虚拟网桥发送第一消息,第一消息包括第一容器的地址信息和第一虚拟网桥的标识信息;第一虚拟网桥接收第二虚拟网桥发送的第二消息,第二消息包括第二容器的地址信息和第二虚拟网桥的标识信息;若第一虚拟网桥的标识信息和第二虚拟网桥的标识信息相同,则第一虚拟网桥将第二容器的地址信息发送给第一容器,以使第一容器依据第二容器的地址信息与第二容器通信。该专利申请实现了分散在不同Docker服务器上且属于同一用户的容器之间的正常通信,容器间通信不需要通过广播方式广播待发送的报文,提高了容器之间信息交互的保密性。但是,其通信的效率不高。
技术实现思路
针对现有技术之不足,本专利技术提供了一种面向并行应用的容器通信方法和系统,该方法和系统能够优化运行在同一宿主机中不同容器里面所有类型的高性能并行应用的通信效率,使得同一主机中所有容器间通信都采用内存模式而不是Socket通信模式,这样可以极大提高同主机上不同容器间进程的通信效率,减少宿主机处理器进行网络I/O操作的等待时间,提高了高性能并行应用计算效率,同时进一步提高了系统资源的利用率,从而更好地满足并行应用的计算和通信需求,解决现有技术情况下,并行应用通信效率低和性能瓶颈的问题。根据一个优选实施方式,本专利技术公开了一种面向并行应用的容器通信方法,该方法包括:在第一容器中的第一进程需要和第二容器中的第二进程进行通信且第一和第二容器处于同一个宿主机上的情况下,由所述宿主机在所述第一容器和第二容器之间建立一个不同于基于TCP协议的第一信道的第二信道,所述第一容器将所述第一进程与所述第二进程进行通信的通信数据发送到第一容器和/或第二容器在宿主机上申请的共享内存区域并将通信数据的元数据通过第一信道发送给第二容器,在所述第二进程根据接收到的所述元数据确认接收所述通信数据的情况下,所述第一容器通过所述第二信道将所述通信数据传递给第二容器且所述第二进程通过第一信道将接收数据的确认消息反馈给第一进程。本专利技术的第一信道作为面向连接的确认通道,第二信道作为通信数据传输的专用信道,其能够避免篡改,提高安全性,且将内部通信开销降至最低,还提高了通信数据的传输速度,也能避免通信过程中的冲突问题。首先,通过共享内存通信的稳定性不如通过TCP连接通信。其次,如果将数据和数据的元数据通过相同的信道发送也存在安全性问题。因此,通过该方式,将通信数据及其元数据通过不同的信道发送,提高了本专利技术的安全性。而且,本专利技术是将数据量小的元数据通过稳定性更好的基于TCP协议的第一信道发送,保证了数据传递的准确性和可靠性。而通过将数据量更大的通信数据通过传输效率更高的共享内存的方式传输,提高了并行应用通信的效率。根据一个优选实施方式,所述方法还包括:对所述第一容器和所述第二容器所处的位置进行判断,其包括:在所述第一进程和所述第二进程需要进行通信的情况下,所述第一进程尝试通过调用操作系统的Socket编程接口与所述第二进程建立通信,当所述第一进程和所述第二进程通过Socket编程接口实现消息传递时,获取第一容器的第一IP地址和第二容本文档来自技高网
...

【技术保护点】
1.一种面向并行应用的容器通信方法,其特征在于,其包括:在第一容器(C1)中的第一进程(P1)需要和第二容器(C2)中的第二进程(P2)进行通信且第一和第二容器(C2)处于同一个宿主机(HM1)上的情况下,由所述宿主机(HM1)在所述第一容器(C1)和第二容器(C2)之间建立一个不同于基于TCP协议的第一信道的第二信道,所述第一容器(C1)将所述第一进程(P1)与所述第二进程(P2)进行通信的通信数据发送到第一容器(C1)和/或第二容器(C2)在宿主机(HM1)上申请的共享内存区域并将通信数据的元数据通过第一信道发送给第二容器(C2),在所述第二进程(P2)根据接收到的所述元数据确认接收所述通信数据的情况下,所述第一容器(C1)通过所述第二信道将所述通信数据传递给第二容器(C2)且所述第二进程(P2)通过第一信道将接收数据的确认消息反馈给第一进程(P1)。

【技术特征摘要】
1.一种面向并行应用的容器通信方法,其特征在于,其包括:在第一容器(C1)中的第一进程(P1)需要和第二容器(C2)中的第二进程(P2)进行通信且第一和第二容器(C2)处于同一个宿主机(HM1)上的情况下,由所述宿主机(HM1)在所述第一容器(C1)和第二容器(C2)之间建立一个不同于基于TCP协议的第一信道的第二信道,所述第一容器(C1)将所述第一进程(P1)与所述第二进程(P2)进行通信的通信数据发送到第一容器(C1)和/或第二容器(C2)在宿主机(HM1)上申请的共享内存区域并将通信数据的元数据通过第一信道发送给第二容器(C2),在所述第二进程(P2)根据接收到的所述元数据确认接收所述通信数据的情况下,所述第一容器(C1)通过所述第二信道将所述通信数据传递给第二容器(C2)且所述第二进程(P2)通过第一信道将接收数据的确认消息反馈给第一进程(P1)。2.如权利要求1所述的方法,其特征在于,所述方法还包括:对所述第一容器(C1)和所述第二容器(C2)所处的位置进行判断,其包括:在所述第一进程(P1)和所述第二进程(P2)需要进行通信的情况下,所述第一进程(P1)尝试通过调用操作系统的Socket编程接口与所述第二进程(P2)建立通信,当所述第一进程(P1)和所述第二进程(P2)通过Socket编程接口实现消息传递时,获取第一容器(C1)的第一IP地址和第二容器(C2)的第二IP地址并结合对应的子网掩码计算第一容器(C1)的第一网络号和第二容器(C2)的第二网络号,在第一网络号和第二网络号相同的情况下确认第一容器(C1)和第二容器(C2)处于同一个宿主机(HM1)上。3.如权利要求2所述的方法,其特征在于,所述建立一个不同于基于TCP协议的第一信道的第二信道的处理包括:在确认第一容器(C1)和第二容器(C2)处于同一个宿主机(HM1)上之后,先等待第一进程(P1)与第二进程(P2)之间完成建立基于TCP协议的所述第一信道,然后根据第一信道的TCP连接的第一语义信息建立一个能用于对所述通信数据进行传输的第二信道。4.如权利要求1所述的方法,其特征在于,所述方法还包括:根据所述接收数据的确认消息确定第一进程(P1)与第二进程(P2)之间是否存在进一步的数据交换,若是,则在确认了第一容器(C1)的第一IP地址和第二容器(C2)的第二IP地址均未发生变化的情况下,继续使用所述共享内存区域、已建立的所述第一信道和所述第二信道按照后续通信数据通过第二信道传输且后续通信数据的元数据通过第一信道传输的方式完成第一进程(P1)和第二进程(P2)的数据通信;若否,则先协商释放第二信道,并在第二信道释放后才释放第一信道。5.如权利要求1所述的方法,其...

【专利技术属性】
技术研发人员:王多强金海张弛
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

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

1