《kitex前传》RPC原理解析(一)

1,311 阅读2分钟

前言

最近也是在参与谱写 《Kitex前传:RPC那些你不得不知的故事》的 传输协议:如何把信息发出去 部分内容,所以也是重新复习一遍相关协议并输出笔记

一、RPC是什么

RPC 全称 Remote Procedure Call——远程过程调用。就我亲身经历来看,我在学校学编程,做一些大作业结课项目时,一般都是直接用单体架构实现就足够了,根本也不会涉及到分布式啊,微服务啊之类的知识点,我们写一个函数都是在本地调用就行了。但是通过我亲身实习经历,发现在互联网公司,服务都是部署在不同服务器上的分布式系统,那么这种分布式的一种机制,不同函数之间应该如何调用呢?这里也就引出了我们RPC的概念。

RPC技术简单说就是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明。

这里附个RPC客户端调用远端服务的过程图

image.png

1、客户端client发起服务调用请求。
2、client stub 可以理解成一个代理,会将调用方法、参数按照一定格式进行封装,通过服务提供的地址,发起网络请求。
3、消息通过网络传输到服务端。
4、server stub接受来自socket的消息
5、server stub将消息进行解包、告诉服务端调用的哪个服务,参数是什么
6、结果返回给server stub。
7、sever stub把结果进行打包交给socket
8、socket通过网络传输消息
9、client slub 从socket拿到消息。
10、client stub解包消息将结果返回给client。

一个RPC框架就是把步骤2到9都封装起来。

二、RPC优缺点

RPC的优点:

  1. 提升系统可扩展性
  2. 提升系统可维护性和持续交付能力
  3. 实现系统高可用

RPC的缺点:

  1. 一个完善的RPC框架开发难度大,需要人员配置多
  2. RPC框架调用成功率受限于网络状况
  3. 调用远程方法对初学者来说难度大