批里批里 (゜-゜)つ🍺 干杯~|

七つ一旋桜

园龄:4年2个月粉丝:6关注:3

Day12 rpc | 青训营笔记

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

rpc

可以参考论文Implementing Remote Procedure Calls

RPC由五个部分组成

User、User-Stub、RPC-Runtime、Server-Stub、Server

image.png

数据会由User-stub打包,打包之后发给Runtime,让runtime发给客户端的runrime,客户端的runtime再把数据给Server-stub解压,解压后的数据才由Server进行继续处理。这个过程由Server端发送给User端也是同理

rpc的好处:

  1. 单一职责,有利于工作协作和运维开发
  2. 可扩展性强,资源利用率优
  3. 故障隔离,服务的整体可靠性强

idl

常见的idl有

  • protobuf
  • apache thrift

编解码

TLV编解码

  • tag 标签
  • length 长度
  • value 值,也可以是另一个tlv结构

编码格式的考量

  • 兼容性

    支持增加新的字段而不影响老的服务

  • 通用性

    支持跨平台跨语言

  • 性能

    考量编码后的数据大小和编码耗时

协议

常见的协议有两种

  1. 特殊结束符

这种协议用一个特殊的结束符作为一个单元的结束标志

image-20230210200702947

  1. 边长协议

这种协议用定长的部分和一个不定长的部分组成,其中定长的部分用于描述不定长部分的长度

image.png

网络通信

一般会使用tcp协议或者udp协议

网络通信层会直接使用一些网络库来实现

这些网络库要

  • 提供建议的api
  • 支持tcp udp和uds等协议
  • 可以优雅退出
  • 高性能

关键指标

稳定性

要有一定的保障策略

  • 熔断
  • 限流
  • 超时控制

使用负载均衡机制和重试机制来保证请求成功率

提高长尾请求的成功率:

可以使用备份机制,在第一次请求发出时设置超时时间,如果超出超时时间则直接发出第二次请求

易用性

要保证开箱即用

  • 合理的默认参数
  • 丰富的文档
  • 有脚手架工具

可观测性

内置一些可观测性服务

如日志服务

链路追踪服务

性能指标服务

本文作者:七つ一旋桜

本文链接:https://www.cnblogs.com/poifa/p/17716914.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   七つ一旋桜  阅读(5)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起