这是我参与「第五届青训营 」笔记创作活动的第11天
RPC 框架分层设计|青训营笔记
RPC:即远程过程调用,不同于本地调用,RPC是指调用远端机器的函数或方法,且不需要关心底层的调用细节,如网络协议和传输协议等,对于调用者来说,和调用本地方法没有什么区别
为什么使用RPC:
一个服务拆分为不同的模块,或者单体应用拆分为多个微服务时,此时便需要RPC出场了,不同模块及不同服务间都需要RPC才能完成通信。可以说RPC是分布式系统架构或者微服务架构必不可少的实现手段。
常见的RPC框架
THrift
gRPC
基本概念
本地函数调用过程
远程函数调用(RPC)
主要需要解决三个问题
1.如何进行函数映射
2.数据转换成字节流
3.网络中如何传输
一次RPC的完整过程
RPC的好处
不同的服务甚至可以用不同的语言进行开发
RPC的问题
小小总结以下:
分层设计
编解码层、协议层、网络通信层
一个粒子
编解码层
编解码层-生成代码
编解码层-数据格式
二进制编码——TLV编码
协议层
编码之后需要将数据按照一定的格式传输,这就和协议层有关了
两种协议格式
一个RPC通信协议实例
网络通信层
RPC的关键指标
稳定性
易用性
扩展性
观测性
高性能
企业实践
整体框架——Kitex
Kitex Core:核心组件
Kitex Byted:与公司内部基础设施集成
Kitex Tool:代码生成工具,一种命令行工具
自研网络库-Netpoll
性能优化——网络库优化
1.调度优化
2.LinkBuffer
3.Pool
编解码优化
Kitex
字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点