微服务是大型架构核心,下面我重点详解微服务通信@mikechen
微服务通信
微服务通信,是指在分布式系统中,不同微服务之间通过网络进行数据交互与调用的过程。

在单体应用中,各模块直接通过函数调用即可通信;
而在微服务架构中,每个服务独立部署、独立进程运行,必须通过网络协议实现交互。
为什么需要微服务通信
微服务拆分的初衷,是为了:
独立开发部署:每个服务由独立团队负责;

按需扩展:订单高峰时单独扩容订单服务;
技术异构:不同服务可以使用不同语言或框架。
但这些好处的代价是:
原本的本地调用被拆成“跨网络调用”,必须通过通信机制来保证各服务之间能正常协作。
微服务通信实现
微服务通信的实现方式主要分为两类:同步通信(Sync Communication) 与 异步通信(Async Communication)
1. 同步通信实现
同步通信指调用方发起请求后,需要等待被调用方返回结果,才能继续执行。
常见于实时性要求高的场景,如查询、下单、支付。

(2)常见实现方式
| 通信方式 | 协议 | 特点 |
|---|---|---|
| REST API | HTTP/JSON | 最常见、通用性强 |
| gRPC | HTTP/2 + ProtoBuf | 高性能、支持多语言 |
| GraphQL | HTTP | 灵活查询、前后端协作友好 |
(3)典型架构图
用户服务 ──HTTP/gRPC──> 订单服务 ──HTTP/gRPC──> 库存服务
<──响应───────────────<──响应──────────────
(4)优缺点对比
| 优点 | 缺点 |
|---|---|
| 结构清晰,逻辑简单 | 调用链长,易雪崩 |
| 实时响应,结果确定 | 性能受网络影响 |
| 易于调试和追踪 | 服务耦合度高 |
(5)典型应用场景
下单、支付、查询等需要实时返回结果的接口;
微服务聚合层(API Gateway)调用。
2. 异步通信实现
异步通信是指调用方发送请求后不等待响应,由消息中间件(MQ)负责消息传递,消费者异步处理。
这种方式常用于“削峰填谷”、“解耦服务”、“异步任务”。

(2)常见实现方式
| 技术框架 | 协议 | 特点 |
|---|---|---|
| RabbitMQ | AMQP | 可靠消息投递、确认机制完善 |
| Kafka | 自定义协议 | 高吞吐、适合日志与流式数据 |
| RocketMQ | 自定义协议 | 支持事务消息、顺序消息 |
(3)典型架构图
订单服务 ──> 消息队列 ──> 库存服务 ↑ └─> 通知服务
(4)优缺点对比
| 优点 | 缺点 |
|---|---|
| 服务解耦、提高系统弹性 | 消息丢失/重复需防护 |
| 可削峰填谷、提高稳定性 | 实时性弱 |
| 可实现异步并行处理 | 调试与追踪复杂 |
(5)典型应用场景
异步通知(短信、邮件、积分发放);
数据同步(下单后同步库存);
大流量削峰(抢购、支付高峰期)。