开篇词 | 别老想着怎么用好RPC框架,你得多花时间琢磨原理

为什么要学习RPC?

RPC是解决分布式系统通信问题的一大利器。
RPC对网络通信的整个过程做了完整包装,在搭建分布式系统时,它会使网络通信逻辑的开发变得更加简单,同时也会让网络通信变得更加安全可靠。

如何学习RPC?

学习是一个通过不断解决问题来提升能力的过程,学习RPC可以采取“逐步深入”的方法:

  1. 摆脱现有封装好的框架,了解RPC基本原理以及关键的网络通信过程。
  2. 了解RPC框架中的治理功能以及集群管理功能。
  3. 对RPC活学活用,学习如何提升RPC性能以及在分布式环境下如何定位解决问题。

01 | 核心原理:能否画张图解释下RPC的通信流程

这一讲的标题就是一道很好的面试题呀!

我们平时工作中,可以熟练使用各种框架,但是,我们也需要掌握框架背后的基本原理。

什么是RPC?

RPC的全称是Remote Procedure Call,即远程过程调用。它帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地方法一样的体验,我们不需要因为这个方法是远程调用而需要编写很多与业务无关的代码。

RPC框架一般采用TCP作为数据传输协议。

RPC中的网络传输,会涉及到数据的序列化和反序列化。

RPC如何实现调用远程方法像调用本地方法一样的体验?

服务提供者给出业务接口声明,在调用方的程序里面,RPC框架根据调用的服务接口提前生成动态代理实现类,并通过依赖注入等技术注入到了声明了该接口的相关业务逻辑里面。该代理实现类会拦截所有方法调用,在提供的方法处理逻辑里面完成一整套的远程调用,并把远程调用结果返回给调用方,这样调用方在调用远程方法的时候,就获得了像调用本地接口一样的体验。

RPC通信基本流程图

RPC在现代应用架构中的位置是怎样的?

RPC是解决应用间通信的一种方式,无论是在一个大型的分布式应用系统中,还是在中小型系统中,应用架构都会沿着单体->微服务化的方向演进,这样,整个应用会被拆分成多个不同功能的应用或者服务,这些细粒度的应用或者服务可能会部署到多台服务器中,它们之间的通信,就会通过RPC进行,所以,我们可以说,RPC对应的是整个分布式应用系统,就像是“经络”一样的存在。