一次 RPC 请求响应的具体过程
一次 RPC 请求响应的具体过程
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
一次 RPC 请求响应的具体过程
RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,以便为通信程序之间携带信息数据。在 RPC 过程中,请求服务的程序为客户端,提供服务的程序为服务器。
客户端过程
调用客户端存根(Client Stub)
客户端发起过程调用时,它实际上是在调用本地的客户端存根。这个存根知道如何与远程服务器通信。封装调用信息
客户端存根将调用的过程、参数等信息封装成一个请求消息。请求发送
客户端存根将消息发送到服务器。在发送请求之前,可能还需要通过网络层将消息序列化(转换成字节流)。等待响应
客户端等待服务器的响应。这个过程可能是同步的(阻塞等待响应)或异步的(非阻塞)。
服务器过程
调用服务器存根(Server Stub)
服务器收到请求消息后,这个消息被传递给服务器存根。解析请求
服务器存根解析这个消息,提取出调用的过程和所需的参数。执行过程
服务器存根调用在服务器上实际执行的过程,并传递必要的参数。封装响应信息
执行完毕后,服务器存根将结果封装成响应消息。响应发送
服务器存根将响应消息发送回客户端。同样,在发送之前,可能需要将消息序列化。
客户端接收响应
解析响应
客户端存根接收到响应消息,并对其进行解析,提取出结果数据。返回结果
客户端存根将结果返回给客户端程序,就像是本地过程调用一样。
通过以上步骤,一个 RPC 请求响应的过程就完成了。RPC 隐藏了网络通信的复杂性,使得远程服务调用像本地调用一样简单。