CN110177118B - 一种基于rdma的rpc通信方法 - Google Patents
一种基于rdma的rpc通信方法 Download PDFInfo
- Publication number
- CN110177118B CN110177118B CN201910511302.8A CN201910511302A CN110177118B CN 110177118 B CN110177118 B CN 110177118B CN 201910511302 A CN201910511302 A CN 201910511302A CN 110177118 B CN110177118 B CN 110177118B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- rdma
- data
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于RDMA的RPC通信方法,使客户端能通过服务器端的RDMA网卡直接从服务器的内存中读取数据,减少传统数据传输协议的无用开销,使客户端能获得更大的数据吞吐量;采用了AIO的传输模式实现了真正的异步传输,使系统面对高并发的应用时能提供更好的稳定性;采用了RDMA的one‑sided特性和简单的请求应答机制,使RDMA访问完全不需要远端机的任何确认,减少了服务器端的内存和CPU开销;客户端从由多个服务器节点组成集群系统读取数据时,采用Dijkstra最短路径算法,降低数据传输时的延迟。该方法主要优点包括:降低服务器端CPU在通信传输过程负担;提高网络传输速度;减少服务器端硬盘对客户端远程数据访问性能的影响。
Description
技术领域
本发明涉及一种基于RDMA的RPC通信方法。
背景技术
高性能并行计算机系统发展迅速,2015年11月份发布的top500高性能计算机排行榜中系统峰值性能已经达到50P(Petaflops)处理核数达到数十万的规模。据此发展趋势国际上高性能计算机计算水平将在2017年左右达到500P量级,在2019年达到1E(Exaflops)量级。如此大规模的系统需要支持数百万个节点的高效通信节点间通信机制已成为制约系统性能乃至成败的关键因素。
并行计算机互连网络中链路速率已达40Gpbs,高速链路的误码率大大增加给链路级的可靠传输带来了很大的挑战。随着网络规模的扩大,网络的平均故障时间越来越短,并行计算机的互连网络变得越来越不可靠。在这种条件下并行计算机体系结构设计迫切需要进行对应的容错设计。
自80年代初以来,远程过程调用(RPC)一直是分布式系统的关键构建块。然而,在数据中心运行的新型大规模分布式系统的出现给RPC系统增加了额外的压力。例如,像HDFS,Zookeeper这样的系统或OpenFlow包含要求每秒处理大量RPC请求的集中式RPC服务(例如,namenode,scheduler,controller)。此外,最近一些提供低延迟数据访问的系统,如RAM-Cloud或Tango,要求超低RPC延迟,同时仍然要求RPC系统扩展到大量请求。
不幸的是,用于基于云的系统中的当前RPC实现难以满足这些要求。例如,HDFS和Zookeeper中的RPC服务通常可以在200到500μs之间的延迟时间内每秒处理100-200K操作。其他系统(如Tango中使用的系统)表现更好(60-70μs时600Kop-s/秒),但在所有这些情况下,RPC系统的性能远低于硬件(CPU,网络)所能提供的性能。实际上,我们发现这些系统既不会使网络饱和,也不会使CPU饱和。最近,已经在网络堆栈级别讨论了类似的低效率。为了克服这些问题,已经建议在用户空间中实现网络堆栈,同时减少开销。
通过使用远程直接内存访问(RDMA)将RPC处理与用户空间中的网络处理集成在一起。这是一种高吞吐量低延迟RPC框架,专为提高数据中心大规模分布式系统的性能而量身定制。
发明内容
本发明提供一种基于RDMA的RPC通信方法,为大规模分布式系统实现高吞吐量、低延迟的数据处理。
为了达到上述目的,本发明通过以下技术方案实现:
一种基于RDMA的RPC通信方法,包括以下步骤:
S1、客户端应用程序请求调用远程读数据服务;
S2、客户端应用程序在Zookeeper集群中找到能提供服务的目的服务器IP地址;
S3、客户端将本机可写入的内存起始地址、可写入文件大小、可写入权限给客户端RDMA网卡,客户端RDMA网卡进行序列化;
S4、客户端RDMA网卡与服务器RDMA网卡连接通信;
S5、服务器RDMA网卡收到客户端RDMA网卡内存信息进行反序列化;
S6、服务器RDMA网卡进行查找,判断客户端应用程序请求的数据是否在服务器内存中:
如果数据在服务器内存中,就从内存读取数据直接发送客户端RDMA网卡,由客户端RDMA网卡写入客户端内存;
如果数据不在服务器内存中,服务器RDMA网卡就先从服务器硬盘中读取数据写入服务器内存,再传输给客户端内存。
其中,通过引入Zookeeper集群来增加高并发的能力,Zookeeper用来注册服务和进行负载均衡;通过硬编码的方式,在调用方业务代码中实现服务器IP地址与该服务器所提供的服务的对应关系;Zookeeper集群通过心跳机制检测宕机服务器,并将宕机服务器IP地址与其所提供服务的对应关系从列表中删除。
其中,Zookeeper集群使用了Paxos算法。所述的Paxos算法是基于消息传递且具有高度容错特性的一致性算法,用来解决机器宕机或网络异常的情况。
其中,客户端RDMA网卡与服务器RDMA网卡连接,实现RPC通信的过程包含:
S41、服务器创建可支持的传输协议,即RDMA通信协议;
S42、服务器注册程序号,版本号,调度功能和相应的传输协议;
S43、服务器开始监听连接请求并轮询已建立的连接以接收RPC呼叫请求;
S44、客户端使用服务器创建的传输协议与服务器进行传输和连接;
S45、服务器检查程序号,版本号和认证后,接受客户端的正常连接并建立RPC呼叫和响应连接;
S46、建立连接后,客户端向服务器发出RPC调用请求;
S47、服务器找到相应的过程来获取参数并执行客户端的调用请求;
S48、服务器的服务程序将结果发送给客户端;
S49、客户端获取服务器发送的结果并返回给调用者,RPC调用在此处完成;
S410、服务器将继续监听客户端的连接请求,并轮询已建立的客户端连接以接收客户端新的RPC请求。
基于RDMA的RPC通信方法,使用异步式通信方式(AIO);读操作和写操作都是异步的:
对读操作而言,当有流可读取时,操作系统将可读的数据流传入read方法的缓冲区,并通知应用程序;
对写操作而言,当操作系统将write方法传递的数据流写入完毕时,操作系统主动通知应用程序;
read/write方法都是异步的,完成后会主动调用回调函数。
其中,利用RDMA的one-sided特性,使RDMA访问不需要远端机的任何确认,服务器的网卡使用直接内存存储或读取用户需要的内存数据并返回给用户。
其中,RDMA请求应答机制包含以下过程:
请求方:
“CREG数目”设为Creg_left=N;
“共需拆分出的请求数量”设为Req_left=M;
“已收到响应数量”设为Req_complete_num=0;
步骤A1:将描述符填写到位于主存或片上的发送队列;
步骤A2:NI接收到消息请求后,到发送队列取描述符;
步骤A3:发送方对RDMA Read消息进行拆包解析,有以下情况;
如果“Creg_left>0&&Req_left>0的结果为true”,则进行步骤A4:发送方NI根据RDMA Read描述符进行解析拆包,拆出到远程主存的Get请求和本地NI的Put请求,将Get请求发送到远程主存取数,Put请求悬挂到NI缓冲中等待Get请求激活,并分配对应的Creg条目,Creg_left--、Req_left--;
如果“远程Get响应为true”,则进行步骤A5:远程Get响应返回后,激活悬挂的Put请求,写入本地主存,同时更新已接收数据;Creg_left++;Req_complete_num++;
如果“Req_complete_num==M为true”,则跳出循环;
步骤A6:Get响应消息包接收完毕后,写入完成队列,激活本地完成事件;
对应答方,如果有远程Get请求,则访问本地主存,数据收齐后,返回远程Get响应。
其中,一种基于RDMA的RPC通信方法,使用了Dijkstra算法,使客户端能访问到离自己最近的服务节点:
Dijkstra算法描述:
设全集U:有向图中所有的点的集合;
设点集S:已经找到最短路径的点的集合,初始状态下设仅有起始点t∈S;
设点集Q:还未找到最短路径的点的集合,显然Q=U-S;
设Lk为当前情况下,起点t经过S中若干点k的最短距离(k∈U),初始Lt=0,其他均为+∞;
算法开始:
从起点开始,沿某条弧(设权值为V)找到t的一个邻居n;
令Ln=min{Ln,Lt+V};
按此方式更新起点所有邻居;
在集合Q中找到Lk最小的点m,则Lm即t到m的最短路径长度;
将点m从Q中取出加入S,对点m重复上述所有操作;
与现有技术相比,本发明的方案具有以下优点:
1.高吞吐量:系统应该能够每秒处理大量的RPC请求。在使用集中式组件操作的大规模分布式系统的环境中,该属性是关键。单个RPC服务可能必须处理来自数千台服务器的数百万个RPC请求。
2.低延迟:即使在加载RPC服务器的时候,单个RPC操作的延迟也应该接近原始网络延迟。如果RPC操作是需要在短时间内完成的一系列序列化操作的一部分(例如,RPC用于存储系统中的元数据查找),则此属性非常重要。
3.云集成:该系统更容易应用于基于云的分布式系统。通过RDMA的RPC框架,我们通过联合优化用户空间中的RPC处理和RDMA网络来满足前两个要求。通过提供强大的编程接口来满足最后的要求,该接口为JVM中的应用程序缓冲区提供零拷贝RPC,即使在并发访问时也能维持低RPC延迟。
附图说明
图1是本次发明所述方法的概括流程;
图2是本发明一个实施例的整体结构,示出客户端从服务器端获取读取数据的情况;
图3是本发明中步骤S1的详细的流程;
图4是RDMA和传统的TCP/IP协议相比的优势说明;
图5是RDMA的one-sided特性说明。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合附图和具体实施例对本发明做进一步详细的说明,但不以任何方式限制本发明的范围。
如图1所示,本发明的整体流程,其主要的通信过程包括以下步骤:
S1、客户端应用程序请求调用远程读数据服务;
S2、客户端应用程序在Zookeeper集群中找到能提供服务的目的服务器IP地址;
S3、客户端将本机可写入的内存起始地址、可写入文件大小、可写入权限给客户端RDMA网卡,客户端RDMA网卡进行序列化;
S4、客户端RDMA网卡与服务器RDMA网卡连接通信;
S5、服务器RDMA网卡收到客户端RDMA网卡内存信息进行反序列化;
S6、服务器RDMA网卡进行查找,判断客户端应用程序请求的数据是否在服务器内存中:
如果数据在服务器内存中,服务器RDMA网卡从内存读取数据,直接发送给客户端RDMA网卡,由客户端RDMA网卡写入客户端内存;
如果数据不在服务器内存中,服务器RDMA网卡先从服务器硬盘中读取数据写入服务器内存,再传输给客户端内存。
如图2所示,本发明的消息传输过程,首先,客户端应用程序会将要传输的数据进行序列化(即把对象转换成有序字节流),以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。然后在RPC层进行封装,封装为包头、块列表、消息体三个部分。包头主要保存源mac地址、目的mac地址、校验等,块列表是用来保存一整条消息分几个部分、消息体存放真实数据。之后客户端NIC(RDMA网卡)发送队列将一个报文发送给服务端,服务端NIC将报文放入数据接收队列。接下来服务端RPC拿到客户端数据进行解封装获得消息体。最后将消息体反序列化(网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,按相反的顺序形成新的重建对象)调用服务端的数据,完成后数据和客户端发送到服务端的过程一样从服务端被返回。
本发明使用Zookeeper集群来增加高并发的能力,Zookeeper用来注册服务和进行负载均衡,哪个服务由哪个机器来提供需要让调用者知道,即IP地址和服务名称的对应关系必须一致。所以,通过硬编码的方式把这种对应关系在调用方业务代码中实现;但是,如果提供服务的机器挂掉而调用者无法知晓,若不更改代码则会继续请求挂掉的机器提供服务;对此,Zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的IP和服务对应关系从列表中删除,这样减少对宕机服务器的等待时间,从而提高效率。
Zookeeper使用了Paxos算法。所述的Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,用来解决机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。
由于各服务部署在不同机器,服务间的调用免不了网络通信过程,服务消费方每调用一个服务都要写一坨网络通信相关的代码,不仅复杂而且极易出错。RPC(RemoteProcedure Call Protocol)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
如图3示出RPC的整个通信过程,对应步骤S4包含的以下步骤:
S41、服务器创建可支持的传输协议,即RDMA通信协议;
S42、服务器注册程序号,版本号,调度功能和相应的传输协议;
S43、服务器开始监听连接请求并轮询已建立的连接以接收RPC呼叫请求;
S44、客户端使用服务器创建的传输协议与服务器进行传输和连接;
S45、服务器检查程序号、版本号和认证后,接受客户端的正常连接并建立RPC呼叫和响应连接;
S46、建立连接后,客户端向服务器发出RPC调用请求;
S47、服务器找到相应的过程来获取参数并执行客户端的调用请求;
S48、服务器的服务程序将结果发送给客户端;
S49、客户端获取服务器发送的结果并返回给调用者,RPC调用在此处完成;
S410、服务器将继续监听客户端的连接请求,并轮询已建立的客户端连接以接收客户端新的RPC请求。
本发明使用的RPC通信方式为AIO(异步式通信)的通信方法,AIO的RPC通信与NIO(非阻塞式通信,一般RPC通信方法使用的是NIO的通信模式)不同,read或write这两种方法均为异步的:对于读操作而言,当有数据流可读取时,操作系统会将可读的数据流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的数据流写入完毕时,操作系统主动通知应用程序;即可以理解为,read/write方法都是异步的,完成后会主动调用回调函数。
如图4所示传统TCP/IP传输协议与RDMA的区别在于:传统的TCP/IP存在的问题主要是指I/O瓶颈问题。在高速网络条件下与网络I/O相关的主机处理的高开销限制了可以在机器之间发送的带宽。具体来讲,主要是传统的TCP/IP网络通信是通过内核发送消息。这种方式会导致很低的性能和很低的灵活性。性能低下的原因主要是由于网络通信通过内核传递,这种通信方式存在很高的数据移动和数据复制的开销。
RDMA(Remote Direct Memory Access)技术,全称远程直接内存访问,是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。
如图5所示,本发明利用了RDMA的one-sided特性(即RDMA访问完全不需要远端机的任何确认),减少服务器端的开销,服务器的网卡使用直接内存存储或读取用户需要的内存数据并返回给用户,它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。
RDMA的使用的请求应答机制算法如下:
请求方:
Creg_left=N/*CREG数目*/
Req_left=M/*共需拆分出的请求数量*/
Req_complete_num=0/*已收到响应数量*/
步骤A1:将描述符填写到位于主存\片上的发送队列;
步骤A2:NI接收到消息请求后,到发送队列取描述符;
步骤A3:发送方对RDMA Read消息进行拆包解析;
While(true){
If(Creg_left>0&&Req_left>0){
步骤A4:发送方NI根据RDMA Read描述符进行解析拆包,拆出到远程主存的Get请求和本地NI的Put请求,将Get请求发送到远程主存取数,Put请求悬挂到NI缓冲中等待Get请求激活,并分配对应的Creg条目,Creg_left--、Req_left--;
}
If(远程Get响应){
步骤A5:远程Get响应返回后,激活悬挂的Put请求,写入本地主存,同时更新已接收数据;
Creg_left++;Req_complete_num++;
}
If(Req_complete_num==M)
Break;
}
步骤A6:Get响应消息包接收完毕后,写入完成队列,激活本地完成事件;
应答方:
If(远程Get请求){
访问本地主存,数据收齐后,返回远程Get响应;
}
一般情况下,数据信息不只有一个备份,而是多个备份节点同时拥有相同的数据。为了防止数据的损坏、数据丢失或节点宕机,使RPC通信的更快速,本发明引入了Dijkstra最短路径算法使得客户端能访问到离自己最近的服务节点从而更快的获取数据。
Dijkstra算法描述:
设全集U:有向图中所有的点的集合;
设点集S:已经找到最短路径的点的集合,初始状态下设仅有起始点t∈S;
设点集Q:还未找到最短路径的点的集合,显然Q=U-S;
设Lk为当前情况下,起点t经过S中若干点k的最短距离(k∈U),初始Lt=0,其他均为+∞;
算法开始:
从起点开始,沿某条弧(设权值为V)找到t的一个邻居n;
令Ln=min{Ln,Lt+V};
按此方式更新起点所有邻居;
在集合Q中找到Lk最小的点m,则Lm即t到m的最短路径长度;
将点m从Q中取出加入S,对点m重复上述所有操作;
本方发明采用的基于RDMA的RPC通信方法,可以减少传统传输协议在传输上的无用开销,获得更大的吞吐量;同时,本发明采用的AIO传输模式是真正的异步传输,这样面对高并发的时候能提供更好的稳定性,并且采用了RDMA的one-sided特性和简单的请求应答机制,为了降低传输时的延迟,引入Dijkstra算法也是为了来降低响应时间。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (8)
1.一种基于RDMA的RPC通信方法,其特征在于,包括以下步骤:
S1、客户端应用程序请求调用远程读数据服务;
S2、客户端应用程序在Zookeeper集群中找到能提供服务的目的服务器IP地址;
S3、客户端将本机可写入的内存起始地址、可写入文件大小、可写入权限给客户端RDMA网卡,客户端RDMA网卡进行序列化;
S4、客户端RDMA网卡与服务器RDMA网卡连接,实现RPC通信;
S5、服务器RDMA网卡收到客户端RDMA网卡内存信息进行反序列化;
S6、服务器RDMA网卡进行查找,判断客户端应用程序请求的数据是否在服务器内存中:
如果数据在服务器内存中,服务器RDMA网卡从服务器内存读取数据,直接发送给客户端RDMA网卡,由客户端RDMA网卡写入客户端内存;如果数据不在服务器内存中,服务器RDMA网卡先从服务器硬盘中读取数据写入服务器内存,再传输给客户端RDMA网卡,由客户端RDMA网卡写入客户端内存;
所述RPC通信方法,使用异步式通信模式(AIO),read方法和write方法都是异步的。
2.如权利要求1所述基于RDMA的RPC通信方法,其特征在于,
所述步骤S2中通过Zookeeper集群实现注册服务和进行负载均衡,
通过硬编码的方式,在调用方业务代码中,实现服务器IP地址与该服务器所提供的服务的对应关系;
Zookeeper集群通过心跳机制检测宕机服务器,并将宕机服务器的IP地址与其所提供服务的对应关系删除。
3.如权利要求2所述基于RDMA的RPC通信方法,其特征在于,
Zookeeper集群使用了Paxos算法。
4.如权利要求1所述基于RDMA的RPC通信方法,其特征在于,
所述步骤S4包含如下的RPC通信过程:
S41、服务器创建可支持的传输协议,即RDMA通信协议;
S42、服务器注册程序号,版本号,调度功能和相应的传输协议;
S43、服务器开始监听连接请求并轮询已建立的连接以接收RPC呼叫请求;
S44、客户端使用服务器创建的传输协议与服务器进行传输和连接;
S45、服务器检查程序号,版本号和认证后,接受客户端的正常连接并建立RPC呼叫和响应连接;
S46、建立连接后,客户端向服务器发出RPC调用请求;
S47、服务器找到相应的过程来获取参数并执行客户端的调用请求;
S48、服务器的服务程序将结果发送给客户端;
S49、客户端获取服务器发送的结果并返回给调用者,完成RPC调用;
S410、服务器将继续监听客户端的连接请求,并轮询已建立的客户端连接以接收客户端新的RPC请求。
5.如权利要求1所述基于RDMA的RPC通信方法,其特征在于,
read方法或write方法完成后会主动调用回调函数:
对于读操作而言,当有数据流可读取时,操作系统将可读的流传入read方法的缓冲区,并通知应用程序;
对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。
6.如权利要求5所述基于RDMA的RPC通信方法,其特征在于,
利用RDMA的one-sided特性,在RDMA访问时不需要远端机的任何确认信息,使得服务器的RDMA网卡得以使用直接内存存储或读取用户需要的内存数据并返回给用户。
7.如权利要求6所述基于RDMA的RPC通信方法,其特征在于,
利用RDMA的请求应答机制,将响应请求和相应数据同时发给请求机器,该机制包含以下过程:
对请求方:
“CREG数目”设为Creg_left=N;
“共需拆分出的请求数量”设为Req_left=M;
“已收到响应数量”设为Req_complete_num=0;
步骤A1:将描述符填写到位于主存或片上的发送队列;
步骤A2:NI接收到消息请求后,到发送队列取描述符;
步骤A3:发送方对RDMA Read消息进行拆包解析,有以下情况;
如果“Creg_left>0&&Req_left>0的结果为true”,则进行步骤A4:发送方NI根据RDMARead描述符进行解析拆包,拆出到远程主存的Get请求和本地NI的Put请求,将Get请求发送到远程主存取数,Put请求悬挂到NI缓冲中等待Get请求激活,并分配对应的Creg条目,Creg_left--、Req_left--;
如果“远程Get响应为true”,则进行步骤A5:远程Get响应返回后,激活悬挂的Put请求,写入本地主存,同时更新已接收数据;Creg_left++;Req_complete_num++;
如果“Req_complete_num==M为true”,则跳出循环;
步骤A6:Get响应消息包接收完毕后,写入完成队列,激活本地完成事件;
应答方:
如果有远程Get请求,则访问本地主存,数据收齐后,返回远程Get响应。
8.如权利要求1所述基于RDMA的RPC通信方法,其特征在于,
使用Dijkstra算法,使得客户端能访问到离自己最近的服务节点;
所述Dijkstra算法中,
设全集U:有向图中所有的点的集合;
设点集S:已经找到最短路径的点的集合,初始状态下设仅有起点t∈S;
设点集Q:还未找到最短路径的点的集合,其中Q=U-S;
设Lk为当前情况下,起点t经过S中若干点k的最短距离,初始Lt=0,其他均为+∞;k∈U;
算法开始:
更新起点t的所有邻居;起点t到其中任意一个邻居n的弧的权值为V;令Ln=min{Ln,Lt+V};
在集合Q中找到Lk最小的点m,则Lm为t到m的最短路径长度;
将点m从Q中取出加入S,对点m重复进行“更新其所有邻居,将集合Q中对应最短路径长度的点取出加入S”的操作;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910511302.8A CN110177118B (zh) | 2019-06-13 | 2019-06-13 | 一种基于rdma的rpc通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910511302.8A CN110177118B (zh) | 2019-06-13 | 2019-06-13 | 一种基于rdma的rpc通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110177118A CN110177118A (zh) | 2019-08-27 |
CN110177118B true CN110177118B (zh) | 2022-03-29 |
Family
ID=67698451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910511302.8A Active CN110177118B (zh) | 2019-06-13 | 2019-06-13 | 一种基于rdma的rpc通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110177118B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210073198A1 (en) * | 2019-09-09 | 2021-03-11 | Oracle International Corporation | Using persistent memory and remote direct memory access to reduce write latency for database logging |
CN110602211B (zh) * | 2019-09-16 | 2022-06-14 | 无锡江南计算技术研究所 | 一种带异步通知的乱序rdma方法与装置 |
CN111400213B (zh) * | 2019-09-29 | 2022-02-18 | 杭州海康威视系统技术有限公司 | 传输数据的方法、装置及系统 |
CN110830461B (zh) * | 2019-10-28 | 2021-08-20 | 杭州涂鸦信息技术有限公司 | 基于tls长连接的跨区的rpc服务调用方法及系统 |
CN111221773B (zh) * | 2020-01-15 | 2023-05-16 | 华东师范大学 | 一种基于rdma高速网络和跳表的数据存储架构方法 |
CN111381780A (zh) * | 2020-03-06 | 2020-07-07 | 西安奥卡云数据科技有限公司 | 一种持久性存储的高效字节访问存储系统 |
CN111404931B (zh) * | 2020-03-13 | 2021-03-30 | 清华大学 | 一种基于持久性内存的远程数据传输方法 |
CN111414261B (zh) * | 2020-03-18 | 2023-08-22 | 政采云有限公司 | 一种分布式系统的跨网络调用方法、装置及相关组件 |
CN114095550A (zh) * | 2020-08-10 | 2022-02-25 | 北京瀚海云星科技有限公司 | 一种服务端直接读取引用参数的远程过程调用方法 |
CN113746897A (zh) * | 2021-07-28 | 2021-12-03 | 浪潮电子信息产业股份有限公司 | 一种文件传输方法、装置、设备及存储介质 |
CN113553279B (zh) * | 2021-07-30 | 2023-04-07 | 中科计算技术西部研究院 | 一种rdma通信加速集合通信的方法及系统 |
CN114090483A (zh) * | 2021-09-30 | 2022-02-25 | 上海浦东发展银行股份有限公司 | 一种基于协程的rdma通信方法、装置及存储介质 |
CN114268654A (zh) * | 2021-11-26 | 2022-04-01 | 上海浦东发展银行股份有限公司 | 网络通信方法、装置、设备、存储介质和程序产品 |
CN116089027A (zh) * | 2022-06-14 | 2023-05-09 | 浙江保融科技股份有限公司 | 一种基于jvm的非阻塞分布式计划任务调度方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
CN106657365A (zh) * | 2016-12-30 | 2017-05-10 | 清华大学 | 一种基于rdma的高并发数据传输方法 |
CN107480080A (zh) * | 2017-07-03 | 2017-12-15 | 香港红鸟科技股份有限公司 | 一种基于rdma的零拷贝数据流 |
CN107493329A (zh) * | 2017-08-15 | 2017-12-19 | 诸葛晴凤 | 一种分布式内存文件系统的远程文件访问方法 |
CN108234670A (zh) * | 2018-01-31 | 2018-06-29 | 北京中安智达科技有限公司 | 一种基于zookeeper和netty的分布式远程调用方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404212A (zh) * | 2011-11-17 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种基于InfiniBand网络的跨平台RDMA通信方法 |
US9338193B2 (en) * | 2013-05-31 | 2016-05-10 | International Business Machines Corporation | Remote procedure call with call-by-reference semantics using remote direct memory access |
CN103929415B (zh) * | 2014-03-21 | 2018-03-06 | 华为技术有限公司 | Rdma下数据读写的方法、装置和网络系统 |
-
2019
- 2019-06-13 CN CN201910511302.8A patent/CN110177118B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
CN106657365A (zh) * | 2016-12-30 | 2017-05-10 | 清华大学 | 一种基于rdma的高并发数据传输方法 |
CN107480080A (zh) * | 2017-07-03 | 2017-12-15 | 香港红鸟科技股份有限公司 | 一种基于rdma的零拷贝数据流 |
CN107493329A (zh) * | 2017-08-15 | 2017-12-19 | 诸葛晴凤 | 一种分布式内存文件系统的远程文件访问方法 |
CN108234670A (zh) * | 2018-01-31 | 2018-06-29 | 北京中安智达科技有限公司 | 一种基于zookeeper和netty的分布式远程调用方法 |
Non-Patent Citations (5)
Title |
---|
GPU加速技术在图论算法中的应用;王一同;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20160315;正文第5章第5.1-5.2节 * |
RF-RPC:Remote Fetching RPC Paradigm for RDMA-Enabled Network;Yongwei Wu et al;《IEEE Transactions on Parallel and Distributed Systems》;20181225;第30卷(第7期);全文 * |
基于RDMA的分布式存储系统研究综述;陈游旻等;《计算机研究与发展》;20190129;第56卷(第2期);第227-239页 * |
基于RDMA跨态通信协议的研究与实现;李亮;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20171115;正文第2章第2.1-2.2节,图2.1 * |
高性能计算系统RDMA Read机制研究;盛腾飞等;《计算机工程》;20181031;第44卷(第10期);第69-79页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110177118A (zh) | 2019-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110177118B (zh) | 一种基于rdma的rpc通信方法 | |
US7274706B1 (en) | Methods and systems for processing network data | |
Jose et al. | Memcached design on high performance RDMA capable interconnects | |
US7089289B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices | |
US6799200B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system | |
JP3382953B2 (ja) | 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置 | |
US8458280B2 (en) | Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations | |
US7949815B2 (en) | Virtual heterogeneous channel for message passing | |
US11025564B2 (en) | RDMA transport with hardware integration and out of order placement | |
US20110161456A1 (en) | Apparatus and Method for Supporting Memory Management in an Offload of Network Protocol Processing | |
AU2014200239B2 (en) | System and method for multiple sender support in low latency fifo messaging using rdma | |
US11068412B2 (en) | RDMA transport with hardware integration | |
WO2004061684A2 (en) | Using direct memory access for performing database operations between two or more machines | |
TW200814672A (en) | Method and system for a user space TCP offload engine (TOE) | |
AU2011265444B2 (en) | Low latency FIFO messaging system | |
CN111277616A (zh) | 一种基于rdma的数据传输方法和分布式共享内存系统 | |
US20100306387A1 (en) | Network interface device | |
US7457845B2 (en) | Method and system for TCP/IP using generic buffers for non-posting TCP applications | |
US20080155571A1 (en) | Method and System for Host Software Concurrent Processing of a Network Connection Using Multiple Central Processing Units | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
CN116204487A (zh) | 远程数据访问方法及装置 | |
US20050188070A1 (en) | Vertical perimeter framework for providing application services | |
JP3628514B2 (ja) | 計算機間データ送受信方法 | |
Balaji et al. | Supporting iWARP compatibility and features for regular network adapters | |
CN117041147B (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 |