这是我参与「第五届青训营 」伴学笔记创作活动的第15天。
一、课程目录
- 基本概念
- 分层设计
- 关键指标
- 企业实践
二、课程内容
1、基本概念
远程函数调用(RPC-Remote Procedure Calls)需要解决的问题:
- 函数映射
- 数据流转换成字节流
- 网络传输
一次RPC的完整过程
- IDL(Interface description language)文件:描述接口
- 生成代码:编译器把IDL文件转换成语言对应的静态库
- 编解码:内存中表示到字节序列的转换称为编码,反之为解码,常叫做序列化和反序列化
- 通信协议:规范了数据在网络中的传输内容和格式
- 网络传输:基于成熟的网络库走TCP/UDP传输
RPC的好处
- 单一职责,有利于分工协作和运维开发
- 可扩展性强,资源使用率更优
- 故障隔离:服务整体可靠性更高
问题:
- 服务宕机
- 网络异常
- 请求量突增
2、三层核心:编解码层、协议层和网络通信层
3、关键指标
3.1 稳定性-保障策略
- 熔断;保护调用方
- 限流:防止大流量把服务压垮
- 超时控制:避免浪费资源在不可用节点上
3.2 稳定性-请求成功率
- 负载均衡
- 重试
3.3 稳定性-长尾请求
3.4 稳定性-注册中间件
4、 企业实践
- 微服务过微,传输和序列化开销越来越大
- 将亲和性强的服务实例尽可能调度到同一个物理机,远程RPC调用优化为本地IPC调用
三、补充
现如今,微服务变得越来越流行,而服务间的通信也变得越来越重要,服务间通信本质是交换信息,而交换信息的中介/桥梁正是我们的API。
诚然,目前构建API最受欢迎的仍然是使用Restful(HTTP-JSON),因为它简单、快速、易懂。
gRPC和Restful的区别:
- 编码:protobuf、JSON
- 传输性能gRPC优
- 传输方式:gRPC流式传输
- 可读性:gRPC二进制数据