RPC基础
参考解析
题目来源:
答案:
讲一下RPC基础:
RPC的概念
RPC(Romote Procedure Call,远程过程调用),作为分布式系统中不同节点之间的通信方式,是分布式系统的基石之一,RPC不是具体的方法,而是一种解决不同服务之间调用的设计。
基于RPC开发的框架可以称为RPC框架,典型的有谷歌的gRPC、阿里的Dubbo、Facebook的Thrift等,当然成熟的RPC框架还会有服务注册与发现、服务治理、负载均衡等功能。
RPC的四个要素
- Client
服务调用的发起方
- Client Stub
用于存储要调用的服务器地址、以及将要请求的数据信息打包,通过网络请求发送给Server Stub,然后阻塞,直到接受到返回的数据,然后进行解析。
- Server
Server,包含要调用的方法
- Server Stub
用于接受Client Stub发送的请求数据包并进行解析,完成功能调用,最后将结果进行打包并返回给Client Stub。在没有接受到请求数据包时则处于阻塞状态。
封装了Client Stub和Server Stub后,从Client的角度来看,似乎和本地调用一样。从Server的角度看,似乎就是客户直接调用。
RPC的具体通信步骤
- Client以类似本地调用的方式调Client Stub
- Client Stub序列化生成消息,然后调用本地操作系统的通信模块, Stub阻塞
- 本地操作系统与远程Server进行通信,消息传输到远程操作系统
- 远程操作系统将消息传递给Server Stub
- Server Stub进行反序列化,然后调用Server的对应方法
- Server程序执行方法,将结果传递给Server Stub
- Server Stub将结果进行序列化,然后传递给Server操作系统
- Server操作系统将结果传递给Client
- Client操作系统将其交给Client Stub, Stub从阻塞状态恢复
- Client Stub对结果进行反序列化,并将值返回给Client程序
- Client程序获得返回结果
RPC就是把2-10步进行了封装。