这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
今天学习了RPC框架的基本原理以及自己内部的一个RPC框架Kitex
RPC框架
RPC基本概念
-
远程函数调用
-
RPC需要解决的问题
- 函数映射
- 数据转化成字节流
- 网络传输
-
RPC的好处:
- 单一职责,有利于分工协作和运维开发
- 可扩展性强,资源利用率更优
- 故障隔离,服务的整体可靠性更高
-
RPC带来的问题
- 服务宕机,对方该如何处理?
- 在调用过程中发生网络异常,如何保证消息的可达?
- 请求量突增导致服务无法及时处理,有哪些应对措施?
RPC框架
-
分层设计:编解码层,协议层,网络通信层
-
编解码层
选型:
- 支持自动增加新的字段,而不影响老的服务,这将提高系统的灵活度
- 支持跨平台,跨语言
- 从空间和时间两个维度来考虑,确保性能
-
协议层
根据特殊结束符,或变长协议,进行数据的收发
-
网络通信层
-
关键指标
-
稳定性:熔断,限流,超时控制,长尾请求,注册中间件
-
易用性
- 开箱即用,合理的默认参数选项,丰富的文档
- 周边工具,生成代码工具,脚手架工具
-
扩展性
-
观测性:日志,监控,跟踪,内置观测性服务
-
高性能:低延迟,高吞吐
- 连接池,多路复用,高性能编解码协议,高性能网络库
Kitex
-
Kitex Core,核心组件,=>注册中心,负载均衡,熔断,限流等
-
Kitex Byted,
-
Kitex tool,代码生成工具
-
支持多协议,也支持灵活的自定义协议扩展
-
优化:微服务过微,传输和序列化的开销越来越大, 将亲和性能强的服务实例尽可能调度到同一个物理机,远程RPC调用优化为本地IPC调用