一种高性能远程过程调用协议的通信方法及系统

文档序号:37272640发布日期:2024-03-12 21:03阅读:14来源:国知局
一种高性能远程过程调用协议的通信方法及系统

【】本发明涉及计算机技术及通信领域,尤其一种高性能远程过程调用协议的通信方法及系统。

背景技术

0、
背景技术:

1、并行仿真中涉及大量的事件交互,包含大量的节点间通信。相比于科学计算,这些通信具有动态变化的特点:首先,仿真事件动态生成,导致通信节点动态变化;其次,通信时机动态变化,导致通信时机具有不确定性。目前的仿真通常使用rpc方式实现远程通信。rpc(remote procedure call)远程过程调用协议是一种通过网络从远程计算机上请求服务,远程计算机在计算完成后将结果通过网络返回,交给调用该远程服务的本地节点使用。

2、rpc架构主要包含三个部分,分别是服务代理注册,服务提供者和服务消费者。其中,服务代理注册负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用;服务提供者提供服务接口定义;服务消费者通过远程代理对象调用远程服务。实现rpc主要用到了三种技术,分别为序列化技术(serialization)、服务寻址技术(serviceaddressing)和通信技术(communication)。其中,序列化技术主要是将对象的状态信息转换为网络可以传输的二进制字节流;服务寻址技术是将服务提供者和服务消费者分别维护一个函数id-rpc函数列表,当服务消费者需要进行远程调用时,服务消费者需要传输远程函数id信息,服务提供者根据函数id信息查询rpc函数列表确定需要调用的函数;通信技术是在网络传输层将序列化的字节流传输至目标进程上,实现网络通信。rpc能够让不同服务之间调用方法像同一服务调用本地方法一样,向用户屏蔽了网络传输层,在分布式网络中,能够实现实体在不同进程、不同节点的并行。

3、在架构层面,rpc采用c/s架构,所有服务消费者均与一个服务提供者进行通信。此外,在通信时,目前主流的rpc框架及其实现(例如grpc,brpc等)使用的通信协议通常为tcp协议或者http协议进行通信。然而在并行仿真领域,并行仿真应用通常包含多个服务器同时运行仿真程序,并且运行的硬件环境通常为高性能计算集群,这些集群通常使用诸如infiniband等高性能通信设备进行互连。因此,在使用高性能集群进行并行仿真时,传统的rpc实现将面临复杂的客户端-服务器寻址过程,另外地,在通信时,传统的rpc实现所使用的通信协议也无法充分发挥底层高性能互连设备(例如infiniband)硬件优势。


技术实现思路

0、
技术实现要素:

1、本发明提供了一种高性能远程过程调用协议的通信方法及系统,用以解决在使用高性能集群进行并行仿真时,传统rpc的客户端与服务器之间寻址过程较复杂,并且在通信时无法充分发挥底层高性能互连设备硬件优势的问题。

2、本发明实施例的一种高性能远程过程调用协议的通信方法,包括下列步骤:s1、将传入的rpc请求按照预设的数据格式进行序列化;s2、发送序列化后得到的rpc请求数据包;s3、采用阻塞的服务消费者与带返回值的服务提供者模式进行通信,或者采用非阻塞的服务消费者与不带返回值的服务提供者模式进行通信;s4、完成远程过程调用协议的通信。

3、其中,步骤s1中所述预设的数据格式具体包括:rpc函数名的长度,用于记录rpc函数名所占字节数;rpc函数名,用于记录所述rpc请求调用的函数名称;参数长度,用于记录所述rpc请求传输的参数所占字节数;参数打包列表,用于记录所述rpc请求传输的参数列表。

4、其中,步骤s3中所述的采用阻塞的服务消费者与带返回值的服务提供者模式,具体包括:所述带返回值的服务提供者在反序列化消息队列中收到所述的rpc请求数据包;所述带返回值的服务提供者根据反序列化得到的参数查询函数映射表,若所述函数映射表中不存在所述参数索引的rpc函数,则输出错误信息并结束,若所述函数映射表中存在所述参数索引的rpc函数,则执行该rpc函数;所述带返回值的服务提供者序列化所述rpc函数执行后的返回值;所述带返回值的服务提供者发送序列化后得到的返回值数据包给所述阻塞的服务消费者;所述阻塞的服务消费者判断是否获得所述的返回值数据包,若未收到,则持续监听,若收到,则将所述的返回值数据包进行反序列化;所述阻塞的服务消费者获得所述rpc函数返回值。

5、其中,步骤s3中所述的采用非阻塞的服务消费者与不带返回值的服务提供者模式,具体包括:所述不带返回值的服务提供者在反序列化消息队列中收到的所述rpc请求数据包;所述不带返回值的服务提供者根据反序列化得到的参数查询函数映射表,若所述函数映射表中不存在所述参数索引的rpc函数,输出错误信息并结束,若所述函数映射表中存在所述参数索引的rpc函数,则执行该rpc函数。

6、其中,所述的返回值数据包的格式具体包括:返回值错误码、rpc返回值长度,以及rpc返回值。

7、本发明实施例的一种高性能远程过程调用协议的通信系统,包括:服务消费者和服务提供者;所述服务消费者将传入的rpc请求按照预设的数据格式进行序列化;所述服务消费者向所述服务提供者发送序列化后得到的rpc请求数据包;所述服务消费者与服务提供者配合,采用阻塞的服务消费者与带返回值的服务提供者模式进行通信,或者采用非阻塞的服务消费者与不带返回值的服务提供者模式进行通信,并完成远程过程调用协议的通信。

8、其中,所述预设的数据格式具体包括:rpc函数名的长度,用于记录rpc函数名所占字节数;rpc函数名,用于记录所述rpc请求调用的函数名称;参数长度,用于记录所述rpc请求传输的参数所占字节数;参数打包列表,用于记录所述rpc请求传输的参数列表。

9、其中,所述的采用阻塞的服务消费者与带返回值的服务提供者模式,具体包括:所述带返回值的服务提供者在反序列化消息队列中收到所述的rpc请求数据包;所述带返回值的服务提供者根据反序列化得到的参数查询函数映射表,若所述函数映射表中不存在所述参数索引的rpc函数,则输出错误信息并结束,若所述函数映射表中存在所述参数索引的rpc函数,则执行该rpc函数;所述带返回值的服务提供者序列化所述rpc函数执行后的返回值;所述带返回值的服务提供者发送序列化后得到的返回值数据包给所述阻塞的服务消费者;所述阻塞的服务消费者判断是否获得所述的返回值数据包,若未收到,则持续监听,若收到,则将所述的返回值数据包进行反序列化;所述阻塞的服务消费者获得所述rpc函数返回值。

10、其中,所述的采用非阻塞的服务消费者与不带返回值的服务提供者模式,具体包括:所述不带返回值的服务提供者在反序列化消息队列中收到的所述rpc请求数据包;所述不带返回值的服务提供者根据反序列化得到的参数查询函数映射表,若所述函数映射表中不存在所述参数索引的rpc函数,输出错误信息并结束,若所述函数映射表中存在所述参数索引的rpc函数,则执行该rpc函数。

11、其中,所述的返回值数据包的格式具体包括:返回值错误码、rpc返回值长度,以及rpc返回值。

12、本发明的一种高性能远程过程调用协议的通信方法及系统,通过替换传统rpc在传输时所使用的通信协议,通过使用适配高性能互连设备(例如infiniband)的mpi(message passing interface)协议,在减少传输延迟、提高远程函数服务响应速度的同时,通过mpi中的逻辑进程号,屏蔽通信双方的ip和端口,减少rpc寻址的复杂性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1