RPC原理与实现 | 青训营笔记

132 阅读3分钟

RPC原理与实现 | 青训营笔记

这是我参与「第五届青训营 」笔记创作活动的第14天

今天主要对RPC原理与实现进行学习。

一、本堂课重点内容:

本次课程讲了以下几个方面:

  1. 基本概念

  2. 分层设计

  3. 关键指标

  4. 企业实践

二、详细知识点介绍:

1.基本概念

a.本地函数调用

image.png 上图是一个使用Go语言编写的本地函数调用案例。

b.远程函数调用RPC

image.png 上图就是一个远程函数调用的例子,在RPC中,我们需要解决的问题有:函数映射、将数据转换成字节流、网络传输。

c.一次RPC的完整过程

image.png 相比于本地函数调用,远程调用时,我们不知道远程的有哪些方法,需要什么参数,这时我们就需要使用IDL文件进行描述。同时,还可以使用相关的编译器对IDL文件转化成语言对应的静态库。此外还涉及到了编解码,通信协议和网络传输等技术。

2.分层设计

image.png 上图是一个Apache Thrift的分层设计图。

  • 1.RPC框架主要核心有三层:编解码层、协议层和网络通信层
  • 2.二进制编解码的实现原理和选型要点
  • 3.协议的一般构造,以及框架协议解析的基本流程
  • 4.Socket API的调用流程,以及选型网络库时要考察的核心指标

3.关键指标

3.1稳定性-保障策略

为了确保RPC的稳定性,可以使用熔断限流超时控制来对其进行保障。

image.png

3.2易用性

一个实用的RPC框架要具有开箱即用(合理的参数选项,健全的文档)和丰富的周边工具(生成代码工具,脚手架工具)

3.3高性能

高性能意味着高吞吐和低延迟这两个目标。同时,我们可以使用连接池、多路复用等手段来实现高性能这个指标。 image.png

4.企业实践-Kitex

Kitex的整体架构图如下: image.png 其中Kitex Core是核心组件,Kitex Byted集成了字节公司内部的基础设施,Kitex Tool则是代码生成工具,具体可以参考Kitex教程

三、课后个人总结:

通过对RPC原理与实现的学习, 我初步了解了RPC的原理,RPC直译过来就是远程过程调用,涉及了调用,就需要我们了解其网络编程等知识。使用PRC的好处,可以有利于分工合作和运维开发,同时还具有可以扩展性高,有着较高的资源利用率,使服务的整体可靠性更高。RPC本质上而言也是服务的一种调用方式,这便为微服务提供了支撑,微服务架构中,服务的发现及调用便是离不开RPC 的参与的。通过RPC技术,让我们对于远程方法的调用也像本地方法一样方便轻松。