RPC框架学习|青训营笔记

199 阅读3分钟

RPC框架学习|青训营笔记

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记

1.相关概念

IDL (Interface description language)文件 IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信

生成代码 通过编译器工具把IDL文件转换成语言对应的静态库

编解码 从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化

通信协议 规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据

网络传输 通常基于成熟的网络库走TCP/UDP传输

2.RPC流程

Caller(调用端): GenCode(生成代码)-->Encoder(代码转成字节流)-->Protocal(绑定协议)-->Transfer(打包发送)

Callee(被调用端): Transfer-->Protocal-->Decoder-->Gencoder (反解数据)

RPC优势:

单一职责,不同的服务可以被不同的团队采用不同的语言进行开发、部署、运维,有利于分工协作

可扩展性强,资源使用率高,当某些服务需要更多资源时,可以实现对单个服务进行扩容

故障隔离,某个服务发生故障不会导致整体的崩溃,服务整体可靠性更高

RPC弊端:

被调用端可能会发生宕机

调用过程中可能会受网络异常的影响导致消息无法送达

请求量突增可能导致服务无法及时响应

3.关键指标

稳定性-保障策略:

熔断:保护调用方,防止被调用的服务出现问题而影响到整个链路 限流:保护被调用方,防止大流量把服务压垮 超时控制:避免浪费资源在不可用节点上

稳定性-请求成功率:

负载均衡:尽可能均匀的调用各个节点,避免单个节点压力过大

重试

易用性

开箱即用:合理的默认参数选项、丰富的文档

周边工具:生成代码工具、脚手架工具

扩展性

middleware、option、编解码层、协议层、网络传输层、代码生成工具插件扩展

观测性

log(日志)、metric(监控)、tracing(链路跟踪)

内置观测性服务

高性能

目标:高吞吐、低延迟

方法:连接池、多路复用、高性能编解码协议、高性能网络库

总结

本次笔记记录了RCP课程中的学习内容:

1.框架通过中间件来注入各种服务治理策略,保障服务的稳定性 2.通过提供合理的默认配置和方便的命令行工具可以提升框架的易用性 3.框架应当提供丰富的扩展点,例如核心的传输层和协议层 4.观测性除了传统的Log、Metric 和Tracing之外,内置状态暴露服务也很有必要 5.性能可以从多个层面去优化,例如选择高性能的编解码协议和网络库