RPC原理与实现 | 青训营笔记
这是我参与「第五届青训营 」笔记创作活动的第14天
今天主要对RPC原理与实现进行学习。
一、本堂课重点内容:
本次课程讲了以下几个方面:
-
基本概念
-
分层设计
-
关键指标
-
企业实践
二、详细知识点介绍:
1.基本概念
a.本地函数调用
上图是一个使用Go语言编写的本地函数调用案例。
b.远程函数调用RPC
上图就是一个远程函数调用的例子,在RPC中,我们需要解决的问题有:函数映射、将数据转换成字节流、网络传输。
c.一次RPC的完整过程
相比于本地函数调用,远程调用时,我们不知道远程的有哪些方法,需要什么参数,这时我们就需要使用IDL文件进行描述。同时,还可以使用相关的编译器对IDL文件转化成语言对应的静态库。此外还涉及到了编解码,通信协议和网络传输等技术。
2.分层设计
上图是一个Apache Thrift的分层设计图。
- 1.RPC框架主要核心有三层:编解码层、协议层和网络通信层
- 2.二进制编解码的实现原理和选型要点
- 3.协议的一般构造,以及框架协议解析的基本流程
- 4.Socket API的调用流程,以及选型网络库时要考察的核心指标
3.关键指标
3.1稳定性-保障策略
为了确保RPC的稳定性,可以使用熔断、限流和超时控制来对其进行保障。
3.2易用性
一个实用的RPC框架要具有开箱即用(合理的参数选项,健全的文档)和丰富的周边工具(生成代码工具,脚手架工具)
3.3高性能
高性能意味着高吞吐和低延迟这两个目标。同时,我们可以使用连接池、多路复用等手段来实现高性能这个指标。
4.企业实践-Kitex
Kitex的整体架构图如下:
其中Kitex Core是核心组件,Kitex Byted集成了字节公司内部的基础设施,Kitex Tool则是代码生成工具,具体可以参考Kitex教程。
三、课后个人总结:
通过对RPC原理与实现的学习, 我初步了解了RPC的原理,RPC直译过来就是远程过程调用,涉及了调用,就需要我们了解其网络编程等知识。使用PRC的好处,可以有利于分工合作和运维开发,同时还具有可以扩展性高,有着较高的资源利用率,使服务的整体可靠性更高。RPC本质上而言也是服务的一种调用方式,这便为微服务提供了支撑,微服务架构中,服务的发现及调用便是离不开RPC 的参与的。通过RPC技术,让我们对于远程方法的调用也像本地方法一样方便轻松。