典型的"异步请求-响应架构",用 Kafka 做消息传递
1️⃣ 系统整体架构
组件
-
客户端(Client)
发送请求,接收回调。
-
服务器(Server)
负责核心业务逻辑 + Kafka 消息中转。
-
Kafka 消息队列
用于请求与响应的解耦与异步处理。
-
数据库
可能用来存储结果或日志。
2️⃣ 数据流向与过程
(A)客户端发起请求:
- 客户端执行某个操作(例如:下单、计算、任务提交等)
- 客户端通过某种通信方式(如 HTTP、WebSocket、RPC)向服务器发送请求。
(B)服务器收到请求:
-
服务器接收到客户端的请求后:
- 生成一个请求 ID(或 Correlation ID)
- 将请求封装成消息,发送到 Kafka 的某个 请求主题(Request Topic)
(C)后台服务处理请求:
- 服务器后台的某个消费服务订阅了 Kafka 的 Request Topic;
- 它取出消息进行实际业务处理(计算、下单、写库等)。
(D)处理完成后返回结果:
- 处理完成后,将结果封装为新的 Kafka 消息,放入 响应主题(Response Topic);
- 同时携带之前的请求 ID(便于对应请求与响应)。
(E)服务器推送结果给客户端:
- 服务器订阅 Kafka 的 Response Topic;
- 取出处理结果,找到对应的客户端;
- 执行客户端注册的 callback(可能是 WebSocket 推送、长轮询、通知 API 等)。
(F)客户端接收回调并处理结果
3️⃣ 简化的时序图
shell
Client -----> Server -----> Kafka(Request Topic)
↓
Worker / Processor
↓
Kafka(Response Topic)
↓
Server -----> Client callback
4️⃣ 技术栈可能包含
模块 | 技术 |
---|---|
Kafka | Apache Kafka |
Server | Java、Python、Node.js、Go 等 |
Client | Web、App、桌面应用等 |
Callback | WebSocket、HTTP callback、MQTT等 |
消息格式 | JSON、Avro、Protobuf等 |
5️⃣ 这种架构的优点
- 异步解耦,系统高并发。
- 服务器压力小,不阻塞。
- Kafka 保证消息持久、可追溯。
- 支持失败重试、流量削峰、顺序性控制等。