分布式是大型架构核心,下面我详解分布式通信协议@mikechen
传输与编码格式
HTTP:基于文本的应用层协议,常以 JSON、XML 等可读格式承载数据。
便于调试与互操作,但数据冗余较大,带宽利用率相对较低。

gRPC:基于 HTTP/2 传输,默认使用 Protobuf(二进制)序列化。
数据紧凑、解析快,适合高性能需求。
传统 RPC(如基于 TCP 的自定义 RPC):传输与编码高度可定制。
可使用二进制或文本,但缺乏统一规范,互操作性较差。
性能与延迟特性
HTTP(HTTP/1.1):请求-响应模型,连接复用与并发受限,延迟与吞吐在高并发下表现一般。
gRPC(利用 HTTP/2):支持多路复用、流控与头部压缩。

能显著降低延迟、提升吞吐,适合微服务间频繁调用。
传统 RPC:性能视实现而定,纯二进制协议在优化良好时可实现极低延迟,但实现与维护成本高。
接口定义与互操作性
HTTP(RESTful):倾向于资源导向、使用 URI 与标准动词。
接口契约较松,易于跨语言、跨平台集成。
gRPC:基于 IDL(如 .proto),强类型、自动生成客户端/服务端代码。

契约明确,跨语言支持良好但需工具链。
传统 RPC:接口定义方式不一,可能缺乏统一 IDL 或工具支持。
导致版本管理、与跨语言调用复杂。
功能特性与生态支持
HTTP:生态最广,配合浏览器、代理、中间件等支持丰富,
适用于公开 API 、与浏览器交互场景。

gRPC:内置流式通信(双向流)、超时与重试配置。
便于构建高效的微服务通信,与现代云原生生态(如 Envoy)兼容性好。
传统 RPC:可实现自定义高级功能(如特定压缩、加密),但多数功能需自行实现。
mikechen睿哥
10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。