这是我参与「第五届青训营 」笔记创作活动的第3天
一次RPC的完整过程
RPC(远程过程调用)与本地函数调用的区别:函数映射,数据转换字节流,网络传输
IDL(interface description language,一种中立的方式描述的接口,使得不同平台上编写的对象和不同语言编写的程序可以相互通信)
RPC的好处
1、单一职责。
每个过程分工明确,不同服务可以采用不同语言进行开发,独立上线维护有利于分工协作。
2、可扩展性。
在运营压力较大的时候进行资源扩容。
3、故障隔离。
把故障隔离。
RPC带来的问题
服务器容易宕机,需要使用RPC框架进行处理。
RPC (远程过程调用remote procedure call)框架分层设计
解编码层——生成代码
同一份IDL文件,即同一份约束。
解编码层——数据格式
语言特定格式:如Java序列化 文本格式:具有人类可读性,但是无法区分整数和浮点数,无法区分精度,没有强行模型约束,实际运行过程中只能使用文档约束,采用反射机制,性能较差 二进制编码:Thritf,bufferprotocol(TLV编码:Tag标签,Length长度,Value值)
编码前:
编码后:
协议层-协议构造
网络通信层(sockets-API)
RPC稳定性保护策略
熔断
保护调用方。
超时
被调用端可能因为某种原因响应过慢,调用端快速返回,及时释放资源,避免被调用资源被浪费在无效资源。
流量控制
限制流量。调用端发起请求后,被调用方检查业务逻辑,返回超出流量。
负载均衡
长尾请求
Backup request,备份请求,提高长尾请求的成功率。重发请求可以节约时间。