图解 RPC 调用过程

Posted 大黄奔跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解 RPC 调用过程相关的知识,希望对你有一定的参考价值。

关注我,可了解更多有趣的面试相关问题。
本篇收录于《offer快到碗里来》

写在之前

之前有其他读者反馈,我的文章每次主题不够鲜明,似乎什么都想讲,但是似乎什么都没有讲,因此,以后都会专门写某一个小点,不再贪多不烂。

本文不涉及其他的知识,比如为什么需要 Rcp、有什么好处等等,只是单纯讲讲 Rcp 调用过程。

好戏开场

在这里插入图片描述

(1)服务消费方 (client) 调用以本地调用方式调用服务;
(2)客户端存根 (client stub) 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
(3)socket 通过发起网络调用,并将请求参数之类转化为可网络传输的二进制(序列化)
(4)服务器端的 socket 讲消息发给服务器存根 (server stub),讲二进制内容转化为具体对象(反序列化)
(5)服务端存根 (Server stub) 收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;
(6)本地服务执行并将结果返回给服务端存根 (server stub);
(7)服务端存根 (server stub) 将返回结果打包成消息
(8)服务器通过网络协议发送至消费方
(9)客户端存根 (client stub) 接收到消息,并进行解码,返给客户端;
(10)客户端得到本次 Rpc 调用结果

解释几个名词

客户端(Client): 服务的调用方

服务端(Server):真正的服务提供者

服务端存根 (Server stub) :接收客户端发送过来的消息,将消息解包,并调用本地的方法


以上是关于图解 RPC 调用过程的主要内容,如果未能解决你的问题,请参考以下文章

PRC是什么 | 图解系列

Spark原理图解:Rpc通信

jsp执行过程图解

每天一点源代码:rpc/dubbo

3分钟了解RPC原理

通过几段 Java 代码带你理解 RPC