docs: clarify kafka-only production channel

This commit is contained in:
lingniu
2026-07-01 12:24:25 +08:00
parent e81d8dcab5
commit 3d9a520c3c
4 changed files with 34 additions and 6 deletions

View File

@@ -18,7 +18,7 @@
| 框架 | Spring Boot 3.5.3 |
| 网络 | Netty 4.2.9.Final |
| 并发 | Disruptor 4 + 虚拟线程 + `StructuredTaskScope` |
| 消息队列 | **Kafka**vin 分区,保证单车有序) |
| 事件流 | **Kafka**唯一生产消息通道,vin 分区,保证单车有序) |
| 线上消息格式 | **Protobuf**,调试走 JSON |
| MQTT 客户端 | Eclipse Paho 1.2.5 |
| 会话索引 | Redis |
@@ -96,7 +96,8 @@ Redis 最新状态查询不在默认 Maven reactor 中;需要时使用 `-Popti
## 核心原则
1. **接入与业务落库分离**:协议接入应用只负责收、解析、校验、规整和投递 Kafka`vehicle-history-app` 写入 TDengine 历史与 RAW JSON`vehicle-analytics-app` 将 JT808 `daily_mileage_km` 写入 MySQL `vehicle_stat_metric`
2. **协议即插拔**:每个 `protocol-*` / `inbound-*` 都可独立开关(`lingniu.ingest.<name>.enabled`
3. **顺序保证**同一 VIN 严格有序Disruptor hash + Kafka 分区 key
4. **幂等消费**Envelope 带 `eventId`,下游去重
5. **原始可回放**协议接入会把 `rawArchiveKey/rawArchiveUri` 追加到事件 metadataKafka Envelope、TDengine `raw_frames` 和导出都使用 `archive://...` 逻辑 URI 追溯原始 bytes实际文件由 `sink-archive` 管理
2. **Kafka 唯一消息通道**:生产链路不提供 RabbitMQ、RocketMQ 或其他 MQ 后端;接入、历史、统计统一通过 Kafka Envelope 解耦
3. **协议即插拔**每个 `protocol-*` / `inbound-*` 都可独立开关(`lingniu.ingest.<name>.enabled`
4. **顺序保证**同一 VIN 严格有序Disruptor hash + Kafka 分区 key
5. **幂等消费**Envelope 带 `eventId`,下游去重
6. **原始可回放**:协议接入会把 `rawArchiveKey/rawArchiveUri` 追加到事件 metadataKafka Envelope、TDengine `raw_frames` 和导出都使用 `archive://...` 逻辑 URI 追溯原始 bytes实际文件由 `sink-archive` 管理