CN117176776A - 远程通信方法、装置和计算机可读存储介质 - Google Patents

远程通信方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN117176776A
CN117176776A CN202311125767.2A CN202311125767A CN117176776A CN 117176776 A CN117176776 A CN 117176776A CN 202311125767 A CN202311125767 A CN 202311125767A CN 117176776 A CN117176776 A CN 117176776A
Authority
CN
China
Prior art keywords
data
remote
memory
class
request
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.)
Pending
Application number
CN202311125767.2A
Other languages
English (en)
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.)
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Original Assignee
China Telecom Technology Innovation Center
China Telecom Corp Ltd
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 China Telecom Technology Innovation Center, China Telecom Corp Ltd filed Critical China Telecom Technology Innovation Center
Priority to CN202311125767.2A priority Critical patent/CN117176776A/zh
Publication of CN117176776A publication Critical patent/CN117176776A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本公开提供了一种远程通信方法、装置和计算机可读存储介质。远程通信方法包括:确定远程操作请求;和响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,包装类是通过提取器将不同类别的函数捆绑在一起而生成的。本公开可以提高应用程序的网络通信的可靠性和效率。

Description

远程通信方法、装置和计算机可读存储介质
技术领域
本公开涉及云计算技术领域,特别涉及一种远程通信方法、装置和计算机可读存储介质。
背景技术
当前,分布式应用程序对其底层系统的需求日益增长推动下,支持RDMA(RemoteDirect Memory Access,远程直接数据存取)的硬件正在越来越多地被云计算相关领域采用。目前许多基于Java平台的大数据框架组件,在集群之间的数据交换仍然使用普通的套接字方式。
目前,通过RDMA加速Java领域的应用程序已有部分实现,一方面提升了性能,另一方面,这些加速方法往往都是高度定制,适合本身预期用途。
在相关技术中,如图8所示,左侧方式是通过verbs API(ApplicationProgramming Interface,应用程序编程接口)和endpoint(端点)API两种API,分别实现分发消息和简化抽象jVerbs接口。如图8所示,右侧方式是使用传统Java套接字通信,通过快速数据路径发送数据,和慢速控制路径建立连接。
在相关技术中,应用程序的网络通信的可靠性和效率有待提高。
发明内容
本公开解决的一个技术问题是:在相关技术中,应用程序的网络通信的可靠性和效率有待提高。
根据本公开的一个方面,提供了一种远程通信方法,包括:确定远程操作请求;和响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
在一些实施例中,所述多路复用机制包括:利用轮询的方式,查询所述不同类别的函数中的每个线程的文件描述符;根据所述文件描述符获得当前需要执行的线程;将所述当前需要执行的线程与Java应用的应用程序编程接口绑定;和通过所述应用程序编程接口执行当前需要执行的线程,其中,所述当前需要执行的线程为执行所述原子操作过程中的线程。
在一些实施例中,所述远程通信方法还包括:通过远程直接数据存取的方式,从远程内存接收为所述远程操作请求返回的操作地址;和基于所述操作地址,利用忙轮询方式查询Java应用的当前操作状态。
在一些实施例中,所述包装类包括:基于C语言库中的函数生成绑定的Java语言的函数。
在一些实施例中,所述远程通信方法还包括:发出第一数据读取请求;和接收来自于远程内存中的临时缓冲区的数据,其中,所述临时缓冲区为在所述远程内存中被分配的临时内存空间,所述临时缓冲区的数据是原缓冲区的数据被复制到所述临时缓冲区后的数据,所述临时缓冲区的数据是由统一通信UCX接口响应于所述第一数据读取请求通过数据异步传输的方式发送到Java应用的。
在一些实施例中,所述临时缓冲区被切分成多个切片,每个切片包括被写入的数据。
在一些实施例中,所述远程通信方法还包括:发出数据写入请求,所述数据写入请求包括需要写入远程内存的数据,其中,所述需要写入远程内存的数据通过所述UCX接口被写入所述多个切片中的至少一部分;和接收数据写入结果信息,其中,所述数据写入结果信息为所述UCX接口在完成数据写入操作后通过回调的方式返回给Java应用的信息,所述数据写入结果信息用于表示数据写入操作是否成功。
在一些实施例中,所述需要写入远程内存的数据通过所述UCX接口被并行地写入所述多个切片中的至少一部分。
在一些实施例中,所述远程通信方法还包括:在由数据写入操作转换为数据读取操作的情况下,发出第二数据读取请求;和接收所述切片中的数据,其中,所述切片中的数据被复制到目标缓冲区中,且在响应于所述第二数据读取请求使得所述切片中的数据被读取后,所述切片分配的空间被释放。
在一些实施例中,所述多个切片为多个相同长度的切片。
在一些实施例中,所述类方法包括内存访问类方法;所述提取器为jextract提取器。
根据本公开的另一个方面,提供了一种远程通信装置,包括:确定单元,用于确定远程操作请求;和处理单元,用于响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
根据本公开的另一个方面,提供了一种远程通信装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行如前所述的远程通信方法。
根据本公开的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现如前所述的远程通信方法。
在上述远程通信方法中,确定远程操作请求;和响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,包装类是通过提取器将不同类别的函数捆绑在一起而生成的。在该方法中,由于通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作,因此,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是示出根据本公开一些实施例的远程通信方法的流程图;
图2是示出根据本公开另一些实施例的远程通信方法的流程图;
图3是示出根据本公开另一些实施例的远程通信方法的流程图;
图4是示出根据本公开另一些实施例的远程通信方法的流程图;
图5是示意性地示出根据本公开一些实施例的远程通信装置的结构框图;
图6是示意性地示出根据本公开另一些实施例的远程通信装置的结构框图;
图7是示意性地示出根据本公开另一些实施例的远程通信装置的结构框图;
图8是相关技术中的远程通信方法的流程图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是示出根据本公开一些实施例的远程通信方法的流程图。该方法可以由应用程序(简称为应用)执行,例如,由Java应用程序执行。应用程序可以安装在诸如终端或服务器等设备上。如图1所示,该远程通信方法包括步骤S102至S104。
在步骤S102,确定远程操作请求。
例如,应用程序(例如Java应用)可以接收用户的操作,从而确定远程操作请求。
在步骤S104,响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作。该包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
这里,该包装类是通过提取器将不同类别的函数捆绑(例如,绑定)在一起而生成的,也就是说,将不同类别的函数捆绑在一起而生成包装类,这样,应用程序在利用包装类对远程内存中的字节值执行原子操作的过程中,不需要分别不同类别的函数进行调用,从而降低内存地址使用不正确的可能性,减少内存分段错误和程序崩溃。
例如,通过扩展一个公共超类NativeObject(本地对象)实现AutoCloseable接口,规定只允许使用实现包装类的实例,从而减少错误使用内存地址。
另外,本领域技术人员能够理解,所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断;原子操作是指不会被线程调度机制打断的操作。由于程序或操作不被打断,因此可以提高程序运行的可靠性和效率,从而提高了网络通信速度。
在上述步骤中,通过本地原语中的类方法,可以对指定远程内存中字节值进行原子操作,在对远程内存执行原子操作时使用所述包装类,来避免函数调用错误。
在一些实施例中,字节值可以为小字节值。例如,该小字节值为4至8个字节的字节值。
在一些实施例中,本地原语中的类方法包括内存访问类方法。例如,本地原语中的类方法为Java库中的方法,例如当前最新版本的Java库中的内存访问类方法。
再者,多路复用机制可以实现对多个线程中需要执行的线程的查询和执行,从而提高运行效率,进而提高网络通信速度。
本领域技术人员能够理解,远程内存是指应用程序访问的不在本地的内存。
至此,提供了根据本公开一些实施例的远程通信方法。远程通信方法包括:确定远程操作请求;和响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;其中,包装类是通过提取器将不同类别的函数捆绑在一起而生成的。在该方法中,由于通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作,因此,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度。
在一些实施例中,包装类包括:基于C语言库中的函数生成绑定的Java语言的函数。也就是说,在将不同类别的函数捆绑在一起而生成包装类的过程中,例如,可以利用提取器将C语言库中的某些函数生成绑定为Java语言的函数。
例如,如果上述方法中不采用上述包装类,则在应用程序每次运行的过程中,可能都需要将C语言库中的某些函数生成绑定为Java语言的函数,这可能会出现内存地址使用错误的情况。而在本公开的方案中,由于应用程序对远程内存中的字节值执行原子操作的过程中,可以直接利用包装类来执行原子操作,由于包装类已经提前准备,因此,这样不容易出现基于C语言的函数生成绑定为Java语言的函数过程可能出现的错误情况,从而降低内存地址使用不正确的可能性,减少内存分段错误和程序崩溃。
图2是示出根据本公开另一些实施例的远程通信方法的流程图。图3是示出根据本公开另一些实施例的远程通信方法的流程图。
在一些实施例中,提取器为jextract提取器(也可以称为转储提取器)。如图2和图3所示,可以使用jextract提取器将不同类别的(例如上下文(Context)、线程(Worker)、端点(Endpoint)等)函数捆绑在一起生成包装类,例如,可以使用jextract提取器基于C语言库中的函数生成绑定Java语言的函数。如前所述,这可以降低内存地址使用不正确的可能性,减少内存分段错误和程序崩溃。
在一些实施例中,多路复用机制包括:利用轮询的方式,查询不同类别的函数中的每个线程的文件描述符;根据文件描述符获得当前需要执行的线程;将当前需要执行的线程与Java应用的应用程序编程接口(API)绑定;和通过应用程序编程接口执行当前需要执行的线程,其中,所述当前需要执行的线程为执行所述原子操作过程中的线程。在该实施例中,由于采用轮询的方式查询每个线程的文件描述符,并在查询到当前需要执行的线程后,将当前需要执行的线程与Java应用的API绑定,并执行该线程,因此,可以提高网络通信速度,提高了分布式Java应用程序的性能。
例如,在多路复用机制中,可以采用epoll轮询的方式,可以查询每个Worker的文件描述符,再使用jextract提取器将Java应用的对象API生成绑定,并提供给epoll函数使用。
在一些实施例中,所述远程通信方法还包括:通过远程直接数据存取(RDMA)的方式,从远程内存接收为远程操作请求返回的操作地址;和基于操作地址,利用忙轮询方式查询Java应用的当前操作状态。这里,忙轮询方式是指对操作状态执行查询而不对查询得到的结果进行处理的方式。该实施例实现了图2和图3中的请求处理的功能。
在该实施例中,为每个网络操作请求(即远程操作请求)返回一个操作地址,利用忙轮询机制查询当前操作状态,可以以较低的延迟时间帮助应用程序内实现通信同步。
图4是示出根据本公开另一些实施例的远程通信方法的流程图。
在一些实施例中,如图4所示,远程通信方法还包括:发出第一数据读取请求;和接收来自于远程内存中的临时缓冲区的数据,其中,临时缓冲区为在远程内存中被分配的临时内存空间,临时缓冲区的数据是原缓冲区的数据被复制到临时缓冲区后的数据,临时缓冲区的数据是由UCX(Unified Communication X,统一通信)接口响应于第一数据读取请求通过数据异步传输的方式发送到Java应用的。
例如,UCX在远程内存中分配临时内存空间作为临时缓冲区,并将原缓冲区的数据复制到临时缓冲区。在数据读取的过程中,响应于第一数据读取请求,通过UCX接口将远程内存中的临时缓冲区的数据通过数据异步传输的方式发送到Java应用。UCX完成请求临时缓冲区释放。这样实现了应用程序从远程内存读取数据的过程。
在上述实施例中,在数据读取的过程中,由于不管在哪个地址的原缓冲区的数据均被复制到临时缓冲区后,即数据统一位于临时缓冲区,这样在数据读取时,可以统一地从临时缓冲区读取数据,因此可以减小读取数据出错的概率,进而提高了读取速度。
在一些实施例中,如图4所示,临时缓冲区被切分成多个切片,每个切片包括被写入的数据。例如,该多个切片为多个相同长度的切片。
在一些实施例中,如图4所示,远程通信方法还包括:发出数据写入请求,数据写入请求包括需要写入远程内存的数据,其中,需要写入远程内存的数据通过UCX接口被写入多个切片中的至少一部分;和接收数据写入结果信息,其中,数据写入结果信息为UCX接口在完成数据写入操作后通过回调的方式返回给Java应用的信息,所述数据写入结果信息用于表示数据写入操作是否成功。
例如,UCX接口将临时缓冲区切分为多个切片(例如,多个相同长度的切片),通过UCX接口将需要写入远程内存的数据写入多个切片中的至少一部分,并通过回调的方式将数据写入结果返回给Java应用,该数据写入结果信息用于表示数据写入操作是否成功,在数据写入结果表示成功的情况下,说明缓冲区的切片已接收到数据。这样实现了将数据写入远程内存的操作。
在数据写入过程中,将临时缓冲区切分成多个切片,可以将需要写入远程内存的数据逐步地写入多个切片,例如,在写满一个切片后,再接着将剩余的数据写入下一个切片,以此类推,直至数据被全部写入多个切片的至少一部分。由于切片比较小,在写入时比较方便,因此,可以提高将数据写入远程内存的速度。
在一些实施例中,需要写入远程内存的数据可以通过UCX接口被并行地写入所述多个切片中的至少一部分。通过并行写入处理,可以进一步提高将数据写入远程内存的速度。
在另一些实施例中,需要写入远程内存的数据可以通过UCX接口被串行地写入所述多个切片中的至少一部分。这里实现了将数据串行写入远程内存的操作。
在一些实施例中,如图4所示,远程通信方法还包括:在由数据写入操作转换为数据读取操作的情况下,发出第二数据读取请求;和接收切片中的数据,其中,该切片中的数据被复制到目标缓冲区中,且在响应于第二数据读取请求使得切片中的数据被读取后,该切片分配的空间被释放。这样实现了由数据写入操作转换为数据读取操作的过程,在该实施例中,由于该切片中的数据被复制到目标缓冲区中,因此保留了切片中的数据,而在响应于第二数据读取请求使得切片中的数据被读取后,又使得该切片分配的空间被释放,方便下一次的写入操作。因此,该实施例既保存了数据,又不影响下一次的写入操作,方便提供数据通信速度。
另外,图4中示出了JUCX(Java UCX,Java统一通信)接口,作为UCX接口的一种具体实现方式。
本公开的发明人发现,在相关技术中,当前已实现的RDMA加速Java应用程序,一方面是高度定制用途加速,第三方项目应用难度高;另一方面,可以无需修改现有应用程序的代码,但受限于灵活性,不能显示地执行RDMA操作。
为了解决相关技术中Java分布式应用程序如何轻松灵活使用RDMA加速的问题,降低Java分布式应用程序使用成本,本公开的上述技术方案提供了一种基于RDMA的分布式Java应用程序的高性能网络方法,结合UCX保证异构系统间统一通信,采用最新的OpenJDK特性,实现高效可靠的快速互连网络方法。
在本公开的实施例中,充分利用OpenJDK`s Project Panama(巴拿马)项目更容易和更安全地调用Java Native库,再结合UCX提供了统一的抽象接口,支持不同传输方式在异构系统之间的高效稳定的网络通信。并且能够提供易于使用的API,简化了RDMA环境下的编程难度。主要打通Java语言和非Java语言(“陌生”语言,例如,C语言)的互操作性,从而让Java分布式应用程序使用RDMA(高性能传输机制)成为可能。通过先进技术的结合创新,能够在高负载下实现可靠的高效的网络通信,实现了面向对象的现代高性能网络方法。
本公开的上述方法可以帮助Java分布式应用程序构建UCX之上,来支持在Java中使用RDMA。可以将其应用到现有基于Java的分布式系统中,如Apache ZooKeeper(ApacheZooKeeper是一个开源文件应用程序接口,能使大型系统的分布式进程相互同步)或ApacheKafka(Apache Kafka是一个开源消息系统项目)等,以利用RDMA功能加速网络通信。上述方法可以通过jextract生成UCX的native接口,提高Java和非Java语言的互操作性。
图5是示意性地示出根据本公开一些实施例的远程通信装置的结构框图。如图5所示,远程通信装置包括确定单元502和处理单元504。
确定单元502用于确定远程操作请求。
处理单元504用于响应于远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作。包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
至此,提供了根据本公开一些实施例的远程通信装置。在该远程通信装置中,由于通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作,因此,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度。
在一些实施例中,多路复用机制包括:利用轮询的方式,查询不同类别的函数中的每个线程的文件描述符;根据文件描述符获得当前需要执行的线程;将当前需要执行的线程与Java应用的应用程序编程接口绑定;和通过应用程序编程接口执行当前需要执行的线程,其中,当前需要执行的线程为执行原子操作过程中的线程。
在一些实施例中,远程通信装置还包括:接收单元,用于通过远程直接数据存取的方式,从远程内存接收为远程操作请求返回的操作地址。处理单元504还用于基于操作地址,利用忙轮询方式查询Java应用的当前操作状态。
在一些实施例中,包装类包括:基于C语言库中的函数生成绑定的Java语言的函数。
在一些实施例中,远程通信装置还包括:发送单元,用于发出第一数据读取请求。接收单元还用于接收来自于远程内存中的临时缓冲区的数据,其中,临时缓冲区为在远程内存中被分配的临时内存空间,临时缓冲区的数据是原缓冲区的数据被复制到临时缓冲区后的数据,临时缓冲区的数据是由统一通信UCX接口响应于第一数据读取请求通过数据异步传输的方式发送到Java应用的。
在一些实施例中,临时缓冲区被切分成多个切片,每个切片包括被写入的数据。
在一些实施例中,发送单元还用于发出数据写入请求,数据写入请求包括需要写入远程内存的数据,其中,需要写入远程内存的数据通过UCX接口被写入多个切片中的至少一部分;和接收单元还用于接收数据写入结果信息,其中,数据写入结果信息为UCX接口在完成数据写入操作后通过回调的方式返回给Java应用的信息,所述数据写入结果信息用于表示数据写入操作是否成功。
在一些实施例中,需要写入远程内存的数据通过UCX接口被并行地写入多个切片中的至少一部分。
在一些实施例中,发送单元还用于在由数据写入操作转换为数据读取操作的情况下,发出第二数据读取请求;和接收单元还用于接收切片中的数据,其中,切片中的数据被复制到目标缓冲区中,且在响应于第二数据读取请求使得切片中的数据被读取后,切片分配的空间被释放。
在一些实施例中,多个切片为多个相同长度的切片。
在一些实施例中,类方法包括内存访问类方法。
在一些实施例中,提取器为jextract提取器。
图6是示意性地示出根据本公开另一些实施例的远程通信装置的结构框图。远程通信装置包括存储器610和处理器620。其中:
存储器610可以是磁盘、闪存或其它任何非易失性存储介质。存储器用于存储图1至图4中的至少一个所对应实施例中的指令。
处理器620耦接至存储器610,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器620用于执行存储器中存储的指令,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度。
在一些实施例中,还可以如图7所示,远程通信装置700包括存储器710和处理器720。处理器720通过BUS总线730耦合至存储器710。远程通信装置700还可以通过存储接口740连接至外部存储装置750以便调用外部数据,还可以通过网络接口760连接至网络或者另外一台计算机系统(未标出),此处不再进行详细介绍。
在该实施例中,通过存储器存储数据指令,再通过处理器处理上述指令,可以提高应用程序的网络通信的可靠性和效率,从而提高了网络通信速度。
在另一个实施例中,本公开还提供了一种计算机可读存储介质(非瞬时性计算机可读存储介质),其上存储有计算机程序指令,该指令被处理器执行时实现图1至图4中的至少一个所对应实施例中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。

Claims (14)

1.一种远程通信方法,包括:
确定远程操作请求;和
响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;
其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
2.根据权利要求1所述的远程通信方法,其中,所述多路复用机制包括:
利用轮询的方式,查询所述不同类别的函数中的每个线程的文件描述符;
根据所述文件描述符获得当前需要执行的线程;
将所述当前需要执行的线程与Java应用的应用程序编程接口绑定;和
通过所述应用程序编程接口执行当前需要执行的线程,其中,所述当前需要执行的线程为执行所述原子操作过程中的线程。
3.根据权利要求1或2所述的远程通信方法,还包括:
通过远程直接数据存取的方式,从远程内存接收为所述远程操作请求返回的操作地址;和
基于所述操作地址,利用忙轮询方式查询Java应用的当前操作状态。
4.根据权利要求1所述的远程通信方法,其中,
所述包装类包括:基于C语言库中的函数生成绑定的Java语言的函数。
5.根据权利要求1所述的远程通信方法,还包括:
发出第一数据读取请求;和
接收来自于远程内存中的临时缓冲区的数据,其中,所述临时缓冲区为在所述远程内存中被分配的临时内存空间,所述临时缓冲区的数据是原缓冲区的数据被复制到所述临时缓冲区后的数据,所述临时缓冲区的数据是由统一通信UCX接口响应于所述第一数据读取请求通过数据异步传输的方式发送到Java应用的。
6.根据权利要求5所述的远程通信方法,其中,
所述临时缓冲区被切分成多个切片,每个切片包括被写入的数据。
7.根据权利要求6所述的远程通信方法,还包括:
发出数据写入请求,所述数据写入请求包括需要写入远程内存的数据,其中,所述需要写入远程内存的数据通过所述UCX接口被写入所述多个切片中的至少一部分;和
接收数据写入结果信息,其中,所述数据写入结果信息为所述UCX接口在完成数据写入操作后通过回调的方式返回给Java应用的信息,所述数据写入结果信息用于表示数据写入操作是否成功。
8.根据权利要求7所述的远程通信方法,其中:
所述需要写入远程内存的数据通过所述UCX接口被并行地写入所述多个切片中的至少一部分。
9.根据权利要求7所述的远程通信方法,还包括:
在由数据写入操作转换为数据读取操作的情况下,发出第二数据读取请求;和
接收所述切片中的数据,其中,所述切片中的数据被复制到目标缓冲区中,且在响应于所述第二数据读取请求使得所述切片中的数据被读取后,所述切片分配的空间被释放。
10.根据权利要求6所述的远程通信方法,其中,所述多个切片为多个相同长度的切片。
11.根据权利要求1所述的远程通信方法,其中,
所述类方法包括内存访问类方法;
所述提取器为jextract提取器。
12.一种远程通信装置,包括:
确定单元,用于确定远程操作请求;和
处理单元,用于响应于所述远程操作请求,通过本地原语中的类方法和多路复用机制,利用包装类,对远程内存中的字节值执行原子操作;
其中,所述包装类是通过提取器将不同类别的函数捆绑在一起而生成的。
13.一种远程通信装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行如权利要求1至11任意一项所述的远程通信方法。
14.一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现如权利要求1至11任意一项所述的远程通信方法。
CN202311125767.2A 2023-09-01 2023-09-01 远程通信方法、装置和计算机可读存储介质 Pending CN117176776A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311125767.2A CN117176776A (zh) 2023-09-01 2023-09-01 远程通信方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311125767.2A CN117176776A (zh) 2023-09-01 2023-09-01 远程通信方法、装置和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117176776A true CN117176776A (zh) 2023-12-05

Family

ID=88933071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311125767.2A Pending CN117176776A (zh) 2023-09-01 2023-09-01 远程通信方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117176776A (zh)

Similar Documents

Publication Publication Date Title
CN107395665B (zh) 一种区块链业务受理及业务共识方法及装置
CN112328435B (zh) 目标数据备份和恢复的方法、装置、设备及存储介质
US20210342071A1 (en) Input/output processing in a distributed storage node with rdma
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN104881494A (zh) 与Redis服务器进行数据同步的方法、装置和系统
CN104731569B (zh) 一种数据处理方法及相关设备
CA2706737A1 (en) A multi-reader, multi-writer lock-free ring buffer
CN112612623B (zh) 一种共享内存管理的方法和设备
WO2024001024A1 (zh) 在区块链系统中执行交易的方法、区块链系统和节点
WO2023160083A1 (zh) 执行交易的方法、区块链、主节点和从节点
WO2023160085A1 (zh) 执行交易的方法、区块链、主节点和从节点
CN111309649A (zh) 一种数据传输和任务处理方法、装置及设备
CN107977260B (zh) 任务提交方法及装置
WO2020156797A1 (en) Handling an input/output store instruction
CN115080277B (zh) 一种多核系统的核间通信系统
CN115827506A (zh) 数据写入方法、数据读取方法、装置、处理核和处理器
KR102326280B1 (ko) 데이터 처리 방법, 장치, 기기 및 매체
CN111355672A (zh) 一种报文转发的方法及装置
CN116436936B (zh) 一种数据存储系统、方法、存储介质及电子设备
CN116107999B (zh) 一种数据库服务和存储系统及方法
CN115794317B (zh) 一种基于虚拟机的处理方法、装置、设备及介质
CN112689248A (zh) 一种消息处理方法及系统
JP2013534347A (ja) 高性能コンピューティングアプリケーションの実行のためのシステムおよび方法
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
CN117176776A (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