RPC框架 | 青训营笔记

46 阅读2分钟

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


今天学习了RPC框架的基本原理以及自己内部的一个RPC框架Kitex

RPC框架

RPC基本概念

  • 远程函数调用

  • RPC需要解决的问题

    • 函数映射
    • 数据转化成字节流
    • 网络传输
  • RPC的好处:

    • 单一职责,有利于分工协作和运维开发
    • 可扩展性强,资源利用率更优
    • 故障隔离,服务的整体可靠性更高
  • RPC带来的问题

    • 服务宕机,对方该如何处理?
    • 在调用过程中发生网络异常,如何保证消息的可达?
    • 请求量突增导致服务无法及时处理,有哪些应对措施?

RPC框架

  • 分层设计:编解码层,协议层,网络通信层

    • 编解码层

      选型:

      • 支持自动增加新的字段,而不影响老的服务,这将提高系统的灵活度
      • 支持跨平台,跨语言
      • 从空间和时间两个维度来考虑,确保性能
    • 协议层

      根据特殊结束符,或变长协议,进行数据的收发

    • 网络通信层

关键指标

  • 稳定性:熔断,限流,超时控制,长尾请求,注册中间件

  • 易用性

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

  • 观测性:日志,监控,跟踪,内置观测性服务

  • 高性能:低延迟,高吞吐

    • 连接池,多路复用,高性能编解码协议,高性能网络库

Kitex

  • Kitex Core,核心组件,=>注册中心,负载均衡,熔断,限流等

  • Kitex Byted,

  • Kitex tool,代码生成工具

  • 支持多协议,也支持灵活的自定义协议扩展

  • 优化:微服务过微,传输和序列化的开销越来越大, 将亲和性能强的服务实例尽可能调度到同一个物理机,远程RPC调用优化为本地IPC调用