这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
稳定性-保障策略:
- 熔断:保护调用方,防止被调用的服务出现问题而影响整个链路
- 限流:保护被调用方,防止大流量把服务压垮
- 超时控制:避免浪费资源在不可用节点上
这三种都归为降级措施
稳定性-请求成功率:
- 负载均衡:尽量每个服务调用次数相同
- 重试:如果调用失败,会进行重试,但重试到一定次数会定为失败
稳定性-长尾请求:
备份请求:设置一个认为百分之九十九会返回的时间,如果在这个时间内都没返回,我们进行备份请求,减少常规请求的延时
稳定性-注册中间件:
易用性:
- 开箱即用:合理的默认参数选项,丰富的文档
- 周边工具:生成代码工具,脚手架工具
扩展性:
- 中间件
- 可选参数
- 编解码层
- 协议层
- 网络传输层
- 代码生成工具插件扩展
观测性:
-
包含:
- Log
- Metric
- Tracing
-
内置观测性服务
高性能:
-
场景:单机多机,单连接多连接,单/多Client,单/多Server,不同大小的请求包,不同请求类型
-
目标:高吞吐,低延迟
-
手段:连接池,多路复用,高性能编解码协议,高性能网络库
企业实践:
整体架构-Kitex:
- Kitex Core
- Kitex Byted
- Kitex Tool
自研网络库-Netpoll:
- 解决无法感知连接状态问题
- 解决goroutine暴涨的风险
- 提升性能
扩展性设计
性能优化
合并部署
总结:
了解了RPC的稳定性,易用性,扩展性,观测性,高性能的目的,在稳定性方面有许多的措施,在高性能方面实现的手段也有许多,也了解到了Kitex这个RPC框架,通过在网上了解,知道了Kitex主要的优势扩展性,还有网络库Netpoll,在此课程学习后,对我的知识面有了更广的提升。