620 字
3 分钟
分布式通信协议与框架对比

RPC(Remote Procedure Call,远程过程调用)#

一种通过网络调用另一台计算机上的程序或服务的协议,其核心目标是让分布式系统中的服务调用像本地方法调用一样简单透明,开发者无需关注底层网络细节。

Feign 与典型 RPC 框架的对比#

维度FeigngRPC、Dubbo
传输协议HTTP/HTTPS(应用层)自定义TCP协议(传输层)
序列化方式文本二进制
跨语言支持通过HTTP协议间接支持原生多语言支持
性能较低(HTTP头部开销大)高(二进制协议优化)

Protobuf(Protocol Buffers)#

Google开发的一种结构化数据序列化协议,专为高效数据存储和通信设计。

通过二进制编码实现数据的高效传输,同时支持跨平台和多语言。

Protobuf 与 JSON、XML 的对比#

维度ProtobufJSONXML
数据格式二进制文本文本
体积最小(约JSON的1/10)中等最大(约Protobuf的20倍)
解析速度最快(无需词法分析)较慢(需解析字符串结构)最慢(复杂标签解析)
可读性低(需工具解析)高(人类可读)高(人类可读)
适用场景高性能通信、资源受限环境Web API、配置文件配置文件、文档存储

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)#

一种基于发布/订阅模型的轻量级物联网通信协议,专为低带宽、不稳定网络环境设计。

通过极简的协议头部(最小仅2个字节)和异步通信机制,实现低功耗、高可靠的数据传输。

MQTT与其他协议对比#

维度MQTTHTTPMQ
通信模式发布/订阅,一对多请求/响应,点对点点对点或工作队列
协议开销极低(2字节头部)高(文本协议,头部冗余)中等
适用场景物联网、移动推送Web API交互企业应用异步解耦
实时性高(长连接,低延迟)较低(短连接,需轮询)依赖消息堆积与消费速率

Netty#

基于Java的网络编程框架,封装底层NIO操作,简化高性能服务器/客户端开发。

提供异步事件驱动的通信模型,支持自定义协议或扩展现有协议(如TCP/UDP/HTTP/MQTT等多种协议)开发。

适用于高并发、低延迟的通信场景(如RPC框架、实时聊天系统、物联网网关)。

分布式通信协议与框架对比
https://hikaru.im/posts/分布式通信协议与框架对比/
作者
Hikaru
发布于
2025-03-07
许可协议
CC BY-NC-SA 4.0