远程通信方法技术

技术编号:39661049 阅读:5 留言:0更新日期:2023-12-11 18:23
本公开提供了一种远程通信方法

【技术实现步骤摘要】
远程通信方法、装置和计算机可读存储介质


[0001]本公开涉及云计算
,特别涉及一种远程通信方法

装置和计算机可读存储介质


技术介绍

[0002]当前,分布式应用程序对其底层系统的需求日益增长推动下,支持
RDMA(Remote Direct Memory Access
,远程直接数据存取
)
的硬件正在越来越多地被云计算相关领域采用

目前许多基于
Java
平台的大数据框架组件,在集群之间的数据交换仍然使用普通的套接字方式

[0003]目前,通过
RDMA
加速
Java
领域的应用程序已有部分实现,一方面提升了性能,另一方面,这些加速方法往往都是高度定制,适合本身预期用途

[0004]在相关技术中,如图8所示,左侧方式是通过
verbs API(Application Programming Interface
,应用程序编程接口
)

endpoint(
端点
)API
两种
API
,分别实现分发消息和简化抽象
jVerbs
接口

如图8所示,右侧方式是使用传统
Java
套接字通信,通过快速数据路径发送数据,和慢速控制路径建立连接

[0005]在相关技术中,应用程序的网络通信的可靠性和效率有待提高


技术实现思路

[0006]本公开解决的一个技术问题是:在相关技术中,应用程序的网络通信的可靠性和效率有待提高

[0007]根据本公开的一个方面,提供了一种远程通信方法,包括:确定远程操作请求;和响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的

[0008]在一些实施例中,所述多路复用机制包括:利用轮询的方式,查询所述不同类别的函数中的每个线程的文件描述符;根据所述文件描述符获得当前需要执行的线程;将所述当前需要执行的线程与
Java
应用的应用程序编程接口绑定;和通过所述应用程序编程接口执行当前需要执行的线程,其中,所述当前需要执行的线程为执行所述原子操作过程中的线程

[0009]在一些实施例中,所述远程通信方法还包括:通过远程直接数据存取的方式,从远程内存接收为所述远程操作请求返回的操作地址;和基于所述操作地址,利用忙轮询方式查询
Java
应用的当前操作状态

[0010]在一些实施例中,所述包装类包括:基于
C
语言库中的函数生成绑定的
Java
语言的函数

[0011]在一些实施例中,所述远程通信方法还包括:发出第一数据读取请求;和接收来自于远程内存中的临时缓冲区的数据,其中,所述临时缓冲区为在所述远程内存中被分配的
临时内存空间,所述临时缓冲区的数据是原缓冲区的数据被复制到所述临时缓冲区后的数据,所述临时缓冲区的数据是由统一通信
UCX
接口响应于所述第一数据读取请求通过数据异步传输的方式发送到
Java
应用的

[0012]在一些实施例中,所述临时缓冲区被切分成多个切片,每个切片包括被写入的数据

[0013]在一些实施例中,所述远程通信方法还包括:发出数据写入请求,所述数据写入请求包括需要写入远程内存的数据,其中,所述需要写入远程内存的数据通过所述
UCX
接口被写入所述多个切片中的至少一部分;和接收数据写入结果信息,其中,所述数据写入结果信息为所述
UCX
接口在完成数据写入操作后通过回调的方式返回给
Java
应用的信息,所述数据写入结果信息用于表示数据写入操作是否成功

[0014]在一些实施例中,所述需要写入远程内存的数据通过所述
UCX
接口被并行地写入所述多个切片中的至少一部分

[0015]在一些实施例中,所述远程通信方法还包括:在由数据写入操作转换为数据读取操作的情况下,发出第二数据读取请求;和接收所述切片中的数据,其中,所述切片中的数据被复制到目标缓冲区中,且在响应于所述第二数据读取请求使得所述切片中的数据被读取后,所述切片分配的空间被释放

[0016]在一些实施例中,所述多个切片为多个相同长度的切片

[0017]在一些实施例中,所述类方法包括内存访问类方法;所述提取器为
jextract
提取器

[0018]根据本公开的另一个方面,提供了一种远程通信装置,包括:确定单元,用于确定远程操作请求;和处理单元,用于响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的

[0019]根据本公开的另一个方面,提供了一种远程通信装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行如前所述的远程通信方法

[0020]根据本公开的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现如前所述的远程通信方法

[0021]在上述远程通信方法中,确定远程操作请求;和响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,包装类是通过提取器将不同类别的函数捆绑在一起而生成的

在该方法中,由于通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作,因此,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度

[0022]通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚

附图说明
[0023]构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理

[0024]参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
[0025]图1是示出根据本公开一些实施例的远程通信方法的流程图;
[0026]图2是示出根据本公开另一些实施例的远程通信方法的流程图;
[0027]图3是示出根据本公开另一些实施例的远程通信方法的流程图;
[0028]图4是示出根据本公开另一些实施例的远程通信方法的流程图;
[0029]图5本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种远程通信方法,包括:确定远程操作请求;和响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的
。2.
根据权利要求1所述的远程通信方法,其中,所述多路复用机制包括:利用轮询的方式,查询所述不同类别的函数中的每个线程的文件描述符;根据所述文件描述符获得当前需要执行的线程;将所述当前需要执行的线程与
Java
应用的应用程序编程接口绑定;和通过所述应用程序编程接口执行当前需要执行的线程,其中,所述当前需要执行的线程为执行所述原子操作过程中的线程
。3.
根据权利要求1或2所述的远程通信方法,还包括:通过远程直接数据存取的方式,从远程内存接收为所述远程操作请求返回的操作地址;和基于所述操作地址,利用忙轮询方式查询
Java
应用的当前操作状态
。4.
根据权利要求1所述的远程通信方法,其中,所述包装类包括:基于
C
语言库中的函数生成绑定的
Java
语言的函数
。5.
根据权利要求1所述的远程通信方法,还包括:发出第一数据读取请求;和接收来自于远程内存中的临时缓冲区的数据,其中,所述临时缓冲区为在所述远程内存中被分配的临时内存空间,所述临时缓冲区的数据是原缓冲区的数据被复制到所述临时缓冲区后的数据,所述临时缓冲区的数据是由统一通信
UCX
接口响应于所述第一数据读取请求通过数据异步传输的方式发送到
Java
应用的
。6.
根据权利要求5所述的远程通信方法,其中,所述临时缓冲区被切分成多个切片,每个切片包括被写入的数据
。7.
根据权利要求6所述的远程通信方法,还包括:发出数据写入请求,所述数据写入请求包括需要写入远程内存的数据,其中,所述需要写入远程内存...

【专利技术属性】
技术研发人员:王磊高达
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

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

1