RPC框架深入学习| 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天


稳定性-保障策略:

  • 熔断:保护调用方,防止被调用的服务出现问题而影响整个链路
  • 限流:保护被调用方,防止大流量把服务压垮
  • 超时控制:避免浪费资源在不可用节点上

这三种都归为降级措施

稳定性-请求成功率:

  • 负载均衡:尽量每个服务调用次数相同
  • 重试:如果调用失败,会进行重试,但重试到一定次数会定为失败

稳定性-长尾请求:

备份请求:设置一个认为百分之九十九会返回的时间,如果在这个时间内都没返回,我们进行备份请求,减少常规请求的延时

稳定性-注册中间件:

易用性:

  • 开箱即用:合理的默认参数选项,丰富的文档
  • 周边工具:生成代码工具,脚手架工具

扩展性:

  • 中间件
  • 可选参数
  • 编解码层
  • 协议层
  • 网络传输层
  • 代码生成工具插件扩展

观测性:

  • 包含:

    • Log
    • Metric
    • Tracing
  • 内置观测性服务

高性能:

  1. 场景:单机多机,单连接多连接,单/多Client,单/多Server,不同大小的请求包,不同请求类型
  1. 目标:高吞吐,低延迟
  1. 手段:连接池,多路复用,高性能编解码协议,高性能网络库

企业实践:

整体架构-Kitex:

  • Kitex Core
  • Kitex Byted
  • Kitex Tool

自研网络库-Netpoll:

  • 解决无法感知连接状态问题
  • 解决goroutine暴涨的风险
  • 提升性能

扩展性设计

性能优化

合并部署

总结:

了解了RPC的稳定性,易用性,扩展性,观测性,高性能的目的,在稳定性方面有许多的措施,在高性能方面实现的手段也有许多,也了解到了Kitex这个RPC框架,通过在网上了解,知道了Kitex主要的优势扩展性,还有网络库Netpoll,在此课程学习后,对我的知识面有了更广的提升。