微服务框架 - 不变的基建| 青训营笔记

105 阅读2分钟

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

一次RPC的完整过程

RPC(远程过程调用)与本地函数调用的区别:函数映射,数据转换字节流,网络传输 image.png IDL(interface description language,一种中立的方式描述的接口,使得不同平台上编写的对象和不同语言编写的程序可以相互通信)

RPC的好处

1、单一职责。

每个过程分工明确,不同服务可以采用不同语言进行开发,独立上线维护有利于分工协作。

2、可扩展性。

在运营压力较大的时候进行资源扩容。

3、故障隔离。

把故障隔离。

RPC带来的问题

服务器容易宕机,需要使用RPC框架进行处理。

RPC (远程过程调用remote procedure call)框架分层设计

image.png

解编码层——生成代码

image.png 同一份IDL文件,即同一份约束。

解编码层——数据格式

语言特定格式:如Java序列化 文本格式:具有人类可读性,但是无法区分整数和浮点数,无法区分精度,没有强行模型约束,实际运行过程中只能使用文档约束,采用反射机制,性能较差 二进制编码:Thritf,bufferprotocol(TLV编码:Tag标签,Length长度,Value值)

编码前:

image.png

编码后:

image.png

协议层-协议构造

网络通信层(sockets-API)

RPC稳定性保护策略

熔断

保护调用方。

超时

被调用端可能因为某种原因响应过慢,调用端快速返回,及时释放资源,避免被调用资源被浪费在无效资源。

流量控制

限制流量。调用端发起请求后,被调用方检查业务逻辑,返回超出流量。

负载均衡

长尾请求

Backup request,备份请求,提高长尾请求的成功率。重发请求可以节约时间。