这是我参与「第五届青训营 」伴学笔记创作活动的第13天
RPC框架
基本概念
rpc过程
rpc好处:
单一职责,有利于分工协作和运维开发
可拓展性强,资源使用率更优
故障隔离,服务整体可靠性更高
问题:
服务宕机、网络异常、请求量突增
分层设计
IDL文件定义了通信格式
编解码层
兼容性、通用性、性能
协议层
网络通信层
关键设计
稳定性
熔断、限流、超时控制:避免浪费资源在不可用节点上
请求成功率
负载均衡、重试
长尾请求
实现主体:中间件
易用性
开箱即用、周边工具:生成代码工具、脚手架工具
扩展性
观测性
log、metric、tracing
内置观测性服务
高性能
连接池、多路复用、高性能编解码协议、高性能网络库
企业实践
Kitex整体架构
自研网络库Netpoll
背景:原生库无法感知连接状态、存在goroutine暴涨的风险
解决了:
引入epoll主动监听机制,感知连接状态
建立goroutine池,复用goroutine
提升性能,引入Nocopy Buffer,实现0拷贝
扩展性设计
编解码优化
codeGen、JIT
合并部署
微服务过微,传输和序列化开销越来越大
将亲和性强的服务实例尽可能调度到一个物理机,远程rpc调度优化为本地ipc调用
中心化的部署调度和流量控制
基于共享内存的通信协议
定制化服务发现和连接池实现
定制化服务启动和监听逻辑
个人总结
通过本次课程的学习,我深入了解了RPC框架的作用,与其分层结构,还有各对于rpc框架可以进行优化的点