欢迎光临散文网 会员登陆 & 注册

千锋教育2023版Java面试宝典Java面试200题(含美团、字节、阿里大厂真

2023-07-20 09:02 作者:就这么大了  | 我要投稿

谈谈RPC是什么?它的执行流程

RPC全程为remote procedure call,即远程过程调用。

  1. 使用RPC可以像本地调用一样调用远程服务,RPC是进程间的通信方式。
  2. 例如现在有A、B两台服务器,分别在两台服务器上各部署一个应用,A服务器上的应用想要调用B服务器上的应用的方法,由于两个应用不在同一个内存空间,所以不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。(RPC指的是整个网络远程调用过程)
  3. 一个完成的RPC架构中包含四个组件:
  4. 客户端(Client):服务调用方。
  5. 客户端存根(Client Stub):存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  6. 服务端(Server):真正的服务提供者。
  7. (服务端存根)Server Stub:这个Stub可以理解为存根。接收客户端发送过来的消息,将消息解包,并调用本地的方法。
  8. 调用过程:
  9. 客户端以本地调用方式(即以接口方式)调用服务;
  10. 客户端存根接收到调用后,负责将方法、参数等组装成能够进行网络传输的消息体。
  11. 客户端通过sockets将消息发送到服务端。
  12. 服务端存根收到消息后进行解码(将消息对象反序列化)。
  13. 服务端存根根据解码结果调用本地的服务。
  14. 本地服务执行并将结果返回给服务端存根。
  15. 服务端存根将返回的结果打包成消息(将结果消息对象序列化)。
  16. 服务端通过sockets将消息发送到客户端。
  17. 客户端存根接收到结果消息,并进行解码。
  18. 客户端得到最终结果。
  19. PRC的目标就是要把2、3、4、7、8、9的步骤封装起来。在Java中RPC框架比较多,例如:Hessian、gRPC、Thrift、HSF、Dubbo等,其核心就是通讯和序列化。



千锋教育2023版Java面试宝典Java面试200题(含美团、字节、阿里大厂真的评论 (共 条)

分享到微博请遵守国家法律