RPC 框架分层设计|青训营笔记

112 阅读2分钟

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

RPC 框架分层设计|青训营笔记

RPC:即远程过程调用,不同于本地调用,RPC是指调用远端机器的函数或方法,且不需要关心底层的调用细节,如网络协议和传输协议等,对于调用者来说,和调用本地方法没有什么区别

为什么使用RPC:

一个服务拆分为不同的模块,或者单体应用拆分为多个微服务时,此时便需要RPC出场了,不同模块及不同服务间都需要RPC才能完成通信。可以说RPC分布式系统架构或者微服务架构必不可少的实现手段。

常见的RPC框架

THrift

gRPC

基本概念

本地函数调用过程

image.png

远程函数调用(RPC)

image.png

主要需要解决三个问题

1.如何进行函数映射

2.数据转换成字节流

3.网络中如何传输

一次RPC的完整过程

image.png

RPC的好处

image.png 不同的服务甚至可以用不同的语言进行开发

RPC的问题

image.png

小小总结以下:

image.png

分层设计

编解码层、协议层、网络通信层

一个粒子

image.png

编解码层

image.png

编解码层-生成代码

image.png

编解码层-数据格式

image.png

二进制编码——TLV编码

image.png

协议层

编码之后需要将数据按照一定的格式传输,这就和协议层有关了

两种协议格式

image.png

一个RPC通信协议实例

image.png

网络通信层

image.png

RPC的关键指标

稳定性

image.png

易用性

扩展性

观测性

高性能

企业实践

整体框架——Kitex

Kitex Core:核心组件

Kitex Byted:与公司内部基础设施集成

Kitex Tool:代码生成工具,一种命令行工具

image.png

自研网络库-Netpoll

image.png

性能优化——网络库优化

image.png

1.调度优化

2.LinkBuffer

3.Pool

编解码优化

image.png

Kitex

字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点