RPC基本概念
RPC:Remote Procedure Calls,远程过程调用
需要解决的三个问题
- 函数映射
- 数据转换成字节流
- 网络传输
RPC概念模型
- 由五个模型组成:User、User-Stub、RPC-Runtime、Server-Stub、Server
一次RPC完整过程
RPC的优势与问题
-
优势
- 单一职责,有利于分工协作和运维开发
- 可扩展性强,资源利用率更优
- 故障隔离,服务的整体可靠性更高
-
问题
- 服务宕机,对方如何处理?
- 在调用过程中发生网络异常,如何保证消息的可达性?
- 请求量突增导致服务无法及时处理,有哪些应对措施?
-
采用RPC框架来处理上述问题
RPC和RPC框架是一回事吗? 虽然RPC和RPC框架是密切相关的,但它们之间存在一些差异。RPC是一种通信机制的概念,而RPC框架是实现这种通信机制的一种具体工具集合。在使用RPC时,需要选择使用特定的RPC框架来简化开发和管理远程调用。
RPC框架
分层设计(以apache thrift为例)
- 核心三层:编解码层、协议层、网络通信层
关键指标
-
稳定性
- 保障策略
- 熔断:保护调用方,防止被调用的服务出现问题影响到整个问题,withCircuitBreaker()
- 限流:保护被调用方,防止大流量把服务压垮,withRateLimiter()
- 超时控制:避免资源浪费在不可用节点,withTimeout()
- 请求成功率
- 负载均衡:withLoadalancer()
- 重试:withRetry()
- 长尾请求:不太常见的、发生次数很少的请求。这些请求虽然不太常见,但由于种类很多,如果我们不妥善处理它们,可能会影响到整个系统的性能和稳定性。
- backup request:withBackupRequest()
- 保障策略
-
易用性
- 开箱即用
- 周边工具
-
扩展性
-
观测性
- log、metrics、tracing
- 内置观测性服务
-
高性能
- 多场景
- 目标:高吞吐、低延迟
- 手段:连接池、多路复用、高性能编解码协议、高性能网络库
企业实践
Kitex
- 整体架构