目标
- 深入浅出RPC框架
1 RPC介绍
-
RPC - Remote Procedure Calls 远程函数调用
-
函数映射
- 远程设备上进程与请求进程地址空间不一致,通常通过函数ID来确定调用的函数
- 数据转换为字节流
-
数据转换成字节流
- 序列化
-
网络传输
-
结构
- User
- User-Stub
- RPC-Runtime
- Server-Stub
- Server
-
一次RPC的流程
- IDL文件(Interface description language)
- IDL通过中立的方式描述接口
- 不同平台/语言上运行的对象可以相互通信
- 生成代码
- 借助编译器将IDL文件转成语言对应的静态库
- 编解码
- 序列化与反序列化
- 通信协议
- 数据传输的格式和内容,包括额外的元数据
- 网络传输
- 通常基于成熟网络库,走TCP/UDP
- IDL文件(Interface description language)
-
优点
- 单一职责,利于分工和运维
- 可扩展性强,资源使用率高
- 故障隔离
-
挑战
- 服务宕机,请求方如何应对
- 调用过程中网络异常,保证消息可达
- 请求量突增加,服务无法及时处理如何应对
2 RPC 框架分层设计
-
编解码层
- 将IDL文件转换成不同语言对应的lib代码
- 编解码
- 数据格式
- 语言特定
- 文本格式json,xml,csv
- 二进制编码Protobuf等
- 选型
- 兼容、通用、性能
- 数据格式
-
协议层
- 结束符
- 特殊结束符:e.g. \r\n
- 变长协议:Length + message
- 结束符
-
网络通信层
- 提供易用的API
- 封装socketAPI
- 连接管理和事件分发
- 功能
- 协议支持
- 优雅退出、异常处理
- 性能
- 应用层buffer减少copy
- 高性能定时器、对象池等
- 提供易用的API
3 RPC 关键指标分析
-
稳定性
- 保障策略
- 熔断、限流、超时控制
- 请求成功率
- 复杂均衡、重试
- 长尾请求
- Backup Request
- 注册中间件
- 保障策略
-
易用性
- 开箱即用
- 周边工具
-
扩展性
-
观测性
-
高性能
-
gpt的指标分析说明:
- 延迟(Latency):表示从发送请求到接收到响应的时间。较低的延迟意味着系统响应更迅速。
- 吞吐量(Throughput):表示单位时间内处理的请求数量。较高的吞吐量意味着系统可以处理更多的请求。
- 可靠性(Reliability):表示系统在面对故障时的稳定性和可恢复性。可靠性高的系统能够正确处理异常情况,并保证数据的一致性。
- 可扩展性(Scalability):表示系统在面对增加的负载时的能力。可扩展性好的系统能够通过增加资源来提高性能,而不会导致明显的性能下降。
- 安全性(Security):表示系统对于未经授权的访问和数据泄露的防护能力。安全性好的系统能够保护用户数据和系统资源的安全。
4 RPC 企业实践
在企业实践中,RPC 技术广泛应用于构建分布式系统和微服务架构。以下是一些常见的 RPC 企业实践(gpt):
- 服务治理
- 通过使用RPC框架,企业可以实现服务的注册与发现、负载均衡、故障转移和限流等治理功能。这些功能能够提高系统的可靠性和性能。
- 分布式事务
- 在分布式系统中,RPC可以用于实现分布式事务的一致性。通过事务协调器和分布式事务管理器,RPC可以确保在不同的服务之间执行的操作具有原子性和一致性。
- 性能优化
- RPC技术可以用于提高系统的性能。通过合理的框架选择、网络协议优化和数据压缩等手段,可以降低延迟、提高吞吐量和节省带宽。
- 安全防护
- RPC技术可以用于实现安全防护机制,如身份认证、数据加密和访问控制等。这些机制能够保护系统免受恶意攻击和数据泄露。
总结
- 重新复习了远程过程调用这个知识点,对之后面试可能会起到作用
- 加深了使用RPC的应用场景的印象
引用
-
gpt的解释