2025.3.7 笔记
RPC(Remote Procedure Call,远程过程调用)
一种通过网络调用另一台计算机上的程序或服务的协议,其核心目标是让分布式系统中的服务调用像本地方法调用一样简单透明,开发者无需关注底层网络细节。
Feign 与典型 RPC 框架的对比
维度 | Feign | gRPC、Dubbo |
---|---|---|
传输协议 | HTTP/HTTPS(应用层) | 自定义TCP协议(传输层) |
序列化方式 | 文本 | 二进制 |
跨语言支持 | 通过HTTP协议间接支持 | 原生多语言支持 |
性能 | 较低(HTTP头部开销大) | 高(二进制协议优化) |
Protobuf(Protocol Buffers)
Google开发的一种结构化数据序列化协议,专为高效数据存储和通信设计。
通过二进制编码实现数据的高效传输,同时支持跨平台和多语言。
Protobuf 与 JSON、XML 的对比
维度 | Protobuf | JSON | XML |
---|---|---|---|
数据格式 | 二进制 | 文本 | 文本 |
体积 | 最小(约JSON的1/10) | 中等 | 最大(约Protobuf的20倍) |
解析速度 | 最快(无需词法分析) | 较慢(需解析字符串结构) | 最慢(复杂标签解析) |
可读性 | 低(需工具解析) | 高(人类可读) | 高(人类可读) |
适用场景 | 高性能通信、资源受限环境 | Web API、配置文件 | 配置文件、文档存储 |
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)
一种基于发布/订阅模型的轻量级物联网通信协议,专为低带宽、不稳定网络环境设计。
通过极简的协议头部(最小仅2个字节)和异步通信机制,实现低功耗、高可靠的数据传输。
MQTT与其他协议对比
维度 | MQTT | HTTP | MQ |
---|---|---|---|
通信模式 | 发布/订阅,一对多 | 请求/响应,点对点 | 点对点或工作队列 |
协议开销 | 极低(2字节头部) | 高(文本协议,头部冗余) | 中等 |
适用场景 | 物联网、移动推送 | Web API交互 | 企业应用异步解耦 |
实时性 | 高(长连接,低延迟) | 较低(短连接,需轮询) | 依赖消息堆积与消费速率 |
Netty
基于Java的网络编程框架,封装底层NIO操作,简化高性能服务器/客户端开发。
提供异步事件驱动的通信模型,支持自定义协议或扩展现有协议(如TCP/UDP/HTTP/MQTT等多种协议)开发。
适用于高并发、低延迟的通信场景(如RPC框架、实时聊天系统、物联网网关)。
Java Annotation(注解)
用于为代码元素(类、方法、字段等)添加额外说明信息。
这些信息本身不影响程序执行,但可通过编译工具或反射机制在编译时、运行时被解析,实现特定功能。