一种通信的方法及装置制造方法及图纸

技术编号:27488181 阅读:24 留言:0更新日期:2021-03-02 18:05
本发明专利技术提出了一种数据传输方法以及实现该方法的装置。在当前的做法中,主机上的虚拟设备运行的应用程序之间通过远程直接内存访问进行通信时,需要进行多次虚拟化和数据转发,增加了数据传输所需要进行的步骤,从而产生了大量的网络开销和时延。针对当前做法所导致的效率低的问题,本发明专利技术中,虚拟设备上的应用程序申请共享内存,并利用该共享内存与其他的应用程序进行数据传输。通过这种做法,减少了虚拟设备上的应用程序之间进行数据传输所需要进行的步骤,降低了网络开销和时延,从而提高了系统的效率。提高了系统的效率。提高了系统的效率。

【技术实现步骤摘要】
一种通信的方法及装置


[0001]本技术涉及网络通信领域,特别涉及一种云环境下的通信的方法和装置。

技术介绍

[0002]随着网络虚拟化技术的高速发展,越来越多的应用程序(Application,APP)在虚拟机上运行。为了提高网络通信的效率,主机上的应用程序之间进行通信通常采用远程直接内存访问(英文全称:Remote Direct Memory Access,缩写:RDMA)的方式进行通信。RDMA是指通过网络把资料直接转入计算机的存储器,将数据从一个系统快速移动到远程系统的存储器中,而不对操作系统造成任何影响,从而解决了网络传输中主机端数据处理的延迟问题。当本端主机上的虚拟机运行的应用程序与远端的主机上的虚拟机运行的应用程序时,需要在本地虚拟机和远端的虚拟机上配置虚拟网段,然后桥接到物理网卡上,从而进行通信。
[0003]目前,主机上的虚拟机运行的应用程序之间通过RDMA进行通信,需要进行多次虚拟化和数据转发,增加了数据传输所需要进行的步骤,从而产生了大量的网络开销和时延,降低了系统的效率。

技术实现思路

[0004]本申请的实施例提供一种通信的方法,以增加虚拟机上运行的应用程序之间进行的数据传输效率。
[0005]第一方面,本申请提供了一种通信方法,该方法包括:第一共享代理监控第一共享内存,其中,该第一共享内存供第一应用程序使用,第一应用程序运行在第一虚拟设备中,第一虚拟设备位于第一主机中,而该第一共享内存属于第一主机的内存的一部分且不属于第一主机为第一虚拟设备指定的内存,第一主机中设置有独立于第一虚拟设备的第一共享代理;当确定第一共享内存中写入第一应用程序的数据后,第一共享代理从第一共享内存中读取该数据,并将该数据发送到第二应用程序,其中,第二应用程序为第一应用程序指定的数据共享方。通过这种做法,减少了虚拟设备上的应用程序之间进行数据传输所需要进行的步骤,降低了网络开销和时延,从而提高了系统的效率。
[0006]对于上述第一方面,一种可能的实现方式是,第一应用程序申请第一共享内存,并获得分配的第一共享内存;第一应用程序向共享管理中心注册第一应用程序的共享信息,第一应用程序的共享信息包括第一应用程序的标识、第一应用程序指定的数据共享方的标识以及第一共享内存的信息。通过这种做法,使得应用程序之间进行数据传输时,可以来检验相关应用程序是否有共享数据的权限,从而增加了系统的稳定性。
[0007]对于上述第一方面,另一种可能的实现方式是,当第一共享代理从第一共享内存中读取数据之前,第一共享代理根据第一应用程序的标识,向共享管理中心发送查询消息,接收共享管理中心发送的查询响应消息,该查询响应消息指示第一应用程序的数据共享方的信息,该数据共享方的信息包括第二应用程序的标识,则第一共享代理根据第二应用程
序的标识,执行将数据发送到第二应用程序的步骤。通过这种方法,可以提高系统运行的效率。
[0008]对于上述第一方面,另一种可能的实现方式是,第一共享代理将数据发送到第二应用程序是通过远程直接内存访问的方式。通过这种方法,可以提高数据传输的速度,进而提高系统运行的效率。
[0009]对于上述第一方面,另一种可能的实现方式是,第一应用程序获取第一共享内存的虚拟地址,第一主机将第一共享内存的物理地址转换为第一共享代理的虚拟内存的地址,第一共享代理获取第一共享代理的虚拟内存的地址;则相应的,第一应用程序根据第一共享内存的虚拟地址向第一共享内存写入数据,第一共享代理根据第一共享代理的虚拟内存的地址进行对第一共享内存的监控。通过这种方法,使得第一共享代理可以实现对第一共享内存的监控,并可以在有数据写入第一共享内存时提取该数据,从而提高了系统运行的效率。
[0010]对于上述第一方面,另一种可能的实现方式是,根据第一共享内存,第一应用程序创建环形缓冲区,且第一共享内存的虚拟地址为该环形缓冲区的虚拟地址,第一共享内存的物理地址为该环形缓冲区的物理地址。通过这种方法,使得共享内存可以同时被多个应用程序所使用,从而提高了系统运行的效率。
[0011]对于上述第一方面,另一种可能的实现方式是,第一应用程序所申请的第一共享内存可以是内存页的形式,并可以是巨页内存。通过这种方法,可以进一步地提高系统运行的效率。
[0012]对于上述第一方面,另一种可能的实现方式是,对第一共享内存进行等大小划分,使得划分的每一个区域的大小相同。通过这种方法,可以提高共享内存的使用率,从而提高了系统运行的效率。
[0013]第二方面,本申请提供了一种通信方法,该方法包括:第二共享代理接收到来自第一应用程序的数据,其中,第二共享内存供第二应用程序使用,第二应用程序运行在第二虚拟设备中,第二虚拟设备位于第二主机中,第二共享内存属于第二主机的内存的一部分且不属于第二主机为第二虚拟设备指定的内存,第二主机中设置有独立于第二虚拟设备的第二共享代理;第二共享代理将数据写入第二共享内存,使得第二应用程序获得数据,其中,第一应用程序与第二应用程序互为数据共享方。通过这种做法,减少了虚拟设备上的应用程序之间进行数据传输所需要进行的步骤,降低了网络开销和时延,从而提高了系统的效率。
[0014]对于上述第二方面,一种可能的实现方式是,第二应用程序申请第二共享内存,并获得分配的第二共享内存;第二应用程序向共享管理中心注册第二应用程序的共享信息,该第二应用程序的共享信息包括第二应用程序的标识、第二应用程序指定的数据共享方的标识以及第二共享内存的信息。通过这种做法,使得应用程序之间进行数据传输时,可以来检验相关应用程序是否有共享数据的权限,从而增加了系统的稳定性。
[0015]对于上述第二方面,另一种可能的实现方式是,第二共享代理将数据写入第二共享内存中之前,第二共享代理向共享管理中心发送查询消息,确定第二应用程序的标识或第二共享内存的信息,并根据所述第二应用程序的标识或所述第二共享内存的信息,执行所述将所述数据写入所述第二共享内存中的步骤。通过这种方法,可以提高系统运行的效
率。
[0016]对于上述第二方面,另一种可能的实现方式是,所接收来的自第一应用程序的数据是第一应用程序通过远程直接内存访问的方式发送的。通过这种方法,可以提高数据传输的速度,进而提高系统运行的效率。
[0017]对于上述第二方面,另一种可能的实现方式是,第二应用程序获取第二共享内存的虚拟地址,第二主机将第二共享内存的物理地址转换为第二共享代理的虚拟内存的地址,并将第二共享代理的虚拟地址提供给第二共享代理,则相应的,第二共享代理根据共享代理的虚拟内存的地址,将接收到的数据写入第二共享内存。通过这种方法,使得第二共享内存可以将接收到的数据写入第二共享内存,进而使得第二应用程序获取该数据,从而提高了系统的效率。
[0018]对于上述第二方面,另一种可能的实现方式是,第二应用程序根据第二共享内存创建环形缓冲区,第二共享内存的虚拟地址为环形缓冲区的虚拟地址,第二共享内存的物理地址为环形缓冲区的物理地址。通过这种方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种通信方法,其特征在于,所述方法包括:第一共享代理监控第一共享内存,其中,所述第一共享内存供第一应用程序使用,所述第一应用程序运行在第一虚拟设备中,所述第一虚拟设备位于第一主机中,所述第一主机中设置有独立于所述第一虚拟设备的所述第一共享代理;当确定所述第一共享内存中写入所述第一应用程序的数据后,所述第一共享代理从所述第一共享内存中读取所述数据,并将所述数据发送到第二应用程序,其中,所述第二应用程序为所述第一应用程序指定的数据共享方。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一应用程序申请所述第一共享内存,并获得分配的所述第一共享内存;所述第一应用程序向共享管理中心注册所述第一应用程序的共享信息,所述第一应用程序的共享信息包括所述第一应用程序的标识、所述第一应用程序指定的数据共享方的标识以及所述第一共享内存的信息。3.根据权利要求2所述的方法,其特征在于,所述第一共享代理从所述第一共享内存中读取所述数据之前,所述方法还包括:所述第一共享代理根据所述第一应用程序的标识,向所述共享管理中心发送查询消息,接收所述共享管理中心发送的查询响应消息,所述查询响应消息指示所述第一应用程序的数据共享方的信息,所述数据共享方的信息包括所述第二应用程序的标识;则所述第一共享代理根据所述第二应用程序的标识,执行所述将所述数据发送到第二应用程序的步骤。4.根据权利要求1-3任意一项所述的方法,其特征在于,所述将所述数据发送到第二应用程序,包括:通过远程直接内存访问的方式,所述第一共享代理将所述数据发送到第二应用程序。5.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:所述第一应用程序获取所述第一共享内存的虚拟地址;所述第一应用程序将所述第一共享内存的物理地址转换为所述第一共享代理的虚拟内存的地址,所述第一共享代理获取所述第一共享代理的虚拟内存的地址;则相应地,所述第一应用程序根据所述第一共享内存的虚拟地址向所述第一共享内存写入所述数据;所述第一共享代理根据所述第一共享代理的虚拟内存的地址进行对所述第一共享内存的监控。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:根据所述第一共享内存,所述第一应用程序创建环形缓冲区,则所述第一共享内存的虚拟地址为所述环形缓冲区的虚拟地址,所述第一共享内存的物理地址为所述环形缓冲区的物理地址。7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一主机还运行第三应用程序,所述共享内存供所述第一应用程序和所述第三应用程序使用。8.一种通信方法,其特征在于,所述方法包括:第二共享代理接收到来自第一应用程序的数据,其中,第二共享内存供第二应用程序
使用,所述第二应用程序运行在第二虚拟设备中,所述第二虚拟设备位于第二主机中,所述第二主机中设置有独立于所述第二虚拟设备的第二共享代理;所述第二共享代理将所述数据写入所述第二共享内存,使得所述第二应用程序获得所述数据,其中,所述第一应用程序为所述第二应用程序指定的数据共享方。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:所述第二应用程序申请所述第二共享内存,并获得分配的所述第二共享内存;所述第二应用程序向共享管理中心注册所述第二应用程序的共享信息,所述第二应用程序的共享信息包括所述第二应用程序的标识、所述第二应用程序指定的数据共享方的标识以及所述第二共享内存的信息。10.根据权利要求9所述的方法,其特征在于,所述第二共享代理将所述数据写入所述第二共享内存中之前,所述方法还包括:所述第二共享代理向所述共享管理中心发送查询消息,确定所述第二应用程序的标识或所述第二共享内存的信息;则根据所述第二应用程序的标识或所述第二共享内存的信息,执行所述将所述数据写入所述第二共享内存中的步骤。11.根据权利要求8-10任意一项所述的方法,其特征在于,所述接收来自第一应用程序的数据,包括:接收来自所述第一应用程序通过远程直接内存访问的方式发送的数据。12.根据权利要求8-11任意一项所述的方法,其特征在于,所述方法还包括:所述第二应用程序获取所述第二共享内存的虚拟地址;所述第二应用程序将所述第二共享内存的物理地址转换为所述第二共享代理的虚拟内存的地址,并将所述第二共享代理的虚拟内存的地址提供给所述第二共享代理;则相应地,所述第二共享代理根据所述共享代理的虚拟内存的地址,将接收到的数据写入所述第二共享内存。13.根据权利要求12所述的方法,其特征在于,所述方法还包括:根据所述第二共享内存,所述第二应用程序创建环形缓冲区,则所述第二共享内存的虚拟地址为所述环形缓冲区的虚拟地址,所述第二共享内存的物理地址为所述环形缓冲区的物理地址。14.根据权利要求8-13任一项所述的方法,其特征在于,所述第二主机还运行第四应用程序,所述共享内存供所述第二应用程序和所述第四应用程序使用。15.一种计算机系统,其特征在于,所述计算机系统包括第一主机和运行在所述第一主机上的第一虚拟设备,所述第一虚拟设备上运行第一应用程序,所述第一应用程序分配有第一共享内存;所述计算机系统还包括监控模块,所述监控模块独立于所述第一虚拟设备,所述监控模块用于:监控第一共享内存,当确定所述第一共享内存中写入所述第一应用程序的数据后,从所述第一共享内存中读取所述数据,并将所述数据发送到第二应用程序,其中,所述第二应用程序为所述第一应用程序指定的数据共享方。
16.根据权利要求15所述的计算机系统,其特征在于,所述第一应用程序,用于申请所述第一共享内存,并获得分配的所述第一共享内存;以及注册所述第一应用程序的共享信息,所述第一应用程序的共享信息包括所述第一应用程序的标识、所述第一应用程序指定的数据共享方的标识以及所述第一共享内存的信息。17.根据权利要求16所述的计算机系统,其特征在于,所述监控模块从所述第一共享内存中读取所述数据之前,向共享管理中心发送查询消息,接收所述共享管理中心发送的查询响应消息,所述查询响应消息指示所述第一应用程序的数据共享方的信息,所述数据共享方的信...

【专利技术属性】
技术研发人员:肖露魏明昌
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1