深入浅出RPC框架|青训营笔记

125 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第12篇笔记

1. 基本概念

1.1 本地函数调用

image-20220527161850838

1.2 远程函数调用

image-20220527161935368

1.3 RPC概念模型

image-20220527162027767

1.4 一次 RPC 的完整过程

image-20220527162055653

1.5 RPC的好处

image-20220527162251719

1.6 RPC带来的问题

image-20220527162442009

RPC 带来的问题将由 RPC 框架来解决

小结:

image-20220527162516124

2. 分层设计

2.1 分层设计-以Apache Thrift为例

image-20220527162646705

2.2 编解码层

image-20220527162703201

2.3 编解码层-生成代码

image-20220527162728965

2.4 编解码层-数据格式

image-20220527162808660

2.5 编解码层-二进制编码

image-20220527162918758

2.6 编解码层-选型

image-20220527163325442

2.7 协议层

image-20220527163436789

2.8 协议层-概念

image-20220527163507807

2.9 协议层-协议构造

image-20220527163710472

2.10 协议层-协议解析

image-20220527163737897

2.11 网络通信层

image-20220527163806592

2.12 网络通信层-Sockets API

image-20220527163943666

2.13 网络通信层-网络层

image-20220527164028547

小结:

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

3. 核心指标

3.1 稳定性-保障策略

image-20220527165030483

3.2 稳定性-请求成功率

image-20220527165105705

3.3 稳定性-长尾请求

image-20220527165209674

3.4 稳定性-注册中间件

image-20220527165253706

3.5 易用性

image-20220527165656068

3.6 扩展性

image-20220527180621176

3.7 观测性

image-20220527180638257

3.8 高性能

image-20220527181147917

小结:

image-20220527181227759

4. 企业实践

4.1 整体架构-Kitex

image-20220527181310560

4.2 自研网络库-背景

image-20220527181418425

4.3 自研网络库-Netpoll

image-20220527181508582

4.4 扩展性设计

image-20220527181559405

4.5 性能优化-网络库优化

image-20220527181618709

4.6 性能优化-编解码优化

image-20220527181715556

4.7 合并部署

image-20220527181759980

image-20220527181821083

小结:

image-20220527181832600