Day12 rpc | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第 12 天
rpc
可以参考论文Implementing Remote Procedure Calls
RPC由五个部分组成
User、User-Stub、RPC-Runtime、Server-Stub、Server
数据会由User-stub打包,打包之后发给Runtime,让runtime发给客户端的runrime,客户端的runtime再把数据给Server-stub解压,解压后的数据才由Server进行继续处理。这个过程由Server端发送给User端也是同理
rpc的好处:
- 单一职责,有利于工作协作和运维开发
- 可扩展性强,资源利用率优
- 故障隔离,服务的整体可靠性强
idl
常见的idl有
- protobuf
- apache thrift
编解码
TLV编解码
- tag 标签
- length 长度
- value 值,也可以是另一个tlv结构
编码格式的考量
-
兼容性
支持增加新的字段而不影响老的服务
-
通用性
支持跨平台跨语言
-
性能
考量编码后的数据大小和编码耗时
协议
常见的协议有两种
- 特殊结束符
这种协议用一个特殊的结束符作为一个单元的结束标志
- 边长协议
这种协议用定长的部分和一个不定长的部分组成,其中定长的部分用于描述不定长部分的长度
网络通信
一般会使用tcp协议或者udp协议
网络通信层会直接使用一些网络库来实现
这些网络库要
- 提供建议的api
- 支持tcp udp和uds等协议
- 可以优雅退出
- 高性能
关键指标
稳定性
要有一定的保障策略
- 熔断
- 限流
- 超时控制
使用负载均衡机制和重试机制来保证请求成功率
提高长尾请求的成功率:
可以使用备份机制,在第一次请求发出时设置超时时间,如果超出超时时间则直接发出第二次请求
易用性
要保证开箱即用
- 合理的默认参数
- 丰富的文档
- 有脚手架工具
可观测性
内置一些可观测性服务
如日志服务
链路追踪服务
性能指标服务
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/17716914.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步