一次RPC请求响应的具体过程

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

一次RPC请求响应的具体过程

RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,以便为通信程序之间携带信息数据。在RPC过程中,请求服务的程序为客户端,提供服务的程序为服务器。

客户端过程

  1. 调用客户端存根(Client Stub) 客户端发起过程调用时,它实际上是在调用本地的客户端存根。这个存根知道如何与远程服务器通信。

  2. 封装调用信息 客户端存根将调用的过程、参数等信息封装成一个请求消息。

  3. 请求发送 客户端存根将消息发送到服务器。在发送请求之前,可能还需要通过网络层将消息序列化(转换成字节流)。

  4. 等待响应 客户端等待服务器的响应。这个过程可能是同步的(阻塞等待响应)或异步的(非阻塞)。

服务器过程

  1. 调用服务器存根(Server Stub) 服务器收到请求消息后,这个消息被传递给服务器存根。

  2. 解析请求 服务器存根解析这个消息,提取出调用的过程和所需的参数。

  3. 执行过程 服务器存根调用在服务器上实际执行的过程,并传递必要的参数。

  4. 封装响应信息 执行完毕后,服务器存根将结果封装成响应消息。

  5. 响应发送 服务器存根将响应消息发送回客户端。同样,在发送之前,可能需要将消息序列化。

客户端接收响应

  1. 解析响应 客户端存根接收到响应消息,并对其进行解析,提取出结果数据。

  2. 返回结果 客户端存根将结果返回给客户端程序,就像是本地过程调用一样。

通过以上步骤,一个RPC请求响应的过程就完成了。RPC隐藏了网络通信的复杂性,使得远程服务调用像本地调用一样简单。

最后更新于