深入浅出RPC框架 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第 5 篇笔记 ~
-
什么是RPC:
RPC就是远程过程调用,即一个机器通过网络调用另外一个机器的的函数,而且就像调用本地函数一样。
-
RPC好处
- 单一职责,有利于分工协作和运维开发
- 可扩展性强,资源使用率高
- 故障隔离,服务的整体可靠性更高
-
RPC带来的问题
- 服务宕机,调用端转码处理
- 在调用过程中网络异常,如何保证消息的可达性
- 请求量剧增导致服务无法及时处理,怎么应对
-
编码层的数据格式
- 语言特定的格式,比如go语言的gob协议
- 文本格式,比如JSON,XML,CSV等人类易读取的格式
- 二进制编码,具备跨语言和高性能等有点,比如Thrift,Protobuf等
-
传输协议
一般使用四层的TCP协议,但是也有使用HTTP协议的,比如GRPC使用HTTP2.0协议。
-
RPC框架的一些指标
-
稳定性
-
保障策略
- 熔断
- 限流
- 超时控制
-
请求成功率
- 重试
-
解决长尾请求
-
-
易用性
-
扩展性
-
观测性
-
高性能
-
-
RestFul
是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RestFul适用于移动互联网厂商作为业务接口的场
景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
-
RestFul和RPC的区别
- RPC一般是基于TCP实现的,RestFul是基于HTTP来实现的
- RPC请求的header没有HTTP请求header那么多的无用信息,并且RPC请求的header一般都会压缩处理,所以RPC的传输速度是比RestFul更快,所
- 以可以网关和外界的数据传输使用RestFul,微服务内部的各模块之间使用RPC
- RestFul的API的设计上是面向资源的,对于同一资源的获取、传输、修改可以使用GET、POST、PUT来对同一个URL进行区别