基本概念
RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。
需要解决的问题:
函数映射 数据转换成字节流 网络传输
概念模型
User、User-Stub、RPC-Runtime、Server-Stub、Server
优点
a.单一职责,有利于分工协作和运维开发
b.可拓展性强,资源使用率优
c.故障隔离,服务的整体可靠性更高
带来的问题
a.服务宕机,对方应该如何处理?
b.在调用过程中发生网络异常,如何保证消息的可达性?
c.请求量突增导致服务无法及时处理,有哪些应对措施?
一次RPC完整过程
IDL文件👉生成代码👉编解码(兼容/通用/性能)👉通信协议👉网络传输(TCP/UDP)
分层设计
核心层:编解码层、协议层、网络通信层
关键指标
稳定性
保障策略:熔断、限流、超时控制
请求成功率
长尾请求
注册中间件
易用性
合理的默认参数选项、丰富的文档
生成代码工具、脚手架工具
扩展性
观测性
内置观测性服务
Log, Metric, Tracing
高性能
目标:高吞吐、低延迟
手段:连接池、多路复用、高性能编解码协议、高性能网络库