feat: 实现Redis集成与Kafka消息处理优化

- 新增Redis集成模块,支持心跳写入与控制台日志队列
- 优化Kafka消费者实现,支持多实例与自动重连
- 改进消息处理器,支持批量处理与多层解码
- 更新数据库表结构,调整字段类型与约束
- 添加Redis与Kafka的配置项和环境变量支持
- 补充测试用例和文档说明
This commit is contained in:
2026-01-14 17:58:45 +08:00
parent eb94aaf92b
commit 910f1c353f
28 changed files with 1691 additions and 177 deletions

View File

@@ -1,7 +1,7 @@
## MODIFIED Requirements
### Requirement: 数据库表结构管理
系统必须包含数据库表结构的定义和管理机制。
系统 MUST 提供数据库表结构的定义和管理机制。
#### Scenario: 表结构初始化(高吞吐分区表)
- **WHEN** 系统首次启动或部署数据库时
@@ -18,7 +18,7 @@
## ADDED Requirements
### Requirement: 高吞吐写入友好
系统在高吞吐场景(约 5 万条/分钟量级)下避免单点瓶颈。
系统 MUST 在高吞吐场景(约 5 万条/分钟量级)下避免单点瓶颈。
#### Scenario: 批量写入与分区裁剪
- **WHEN** 进行批量写入

View File

@@ -1,7 +1,7 @@
## ADDED Requirements
### Requirement: 心跳消息载荷格式(生产者约束)
Kafka 心跳消息必须包含数据库落库所需的必填字段,并采用 UTF-8 编码。
Kafka 心跳消息 MUST 包含数据库落库所需的必填字段,并采用 UTF-8 编码。
#### Scenario: JSON 心跳消息
- **WHEN** 生产者向主题推送心跳消息
@@ -10,6 +10,11 @@ Kafka 心跳消息必须包含数据库落库所需的必填字段,并采用 U
- **AND** 可选包含 extrajson object
### Requirement: 分区键友好的 Kafka Key
系统 MUST 支持使用 `hotel_id:device_id` 作为 Kafka message key 以获得更好的分区与有序性。
#### Scenario: 缺失 key 仍可处理
- **WHEN** 消息未携带 key
- **THEN** 系统仍应能够消费与处理该消息
#### Scenario: 使用 device_id 作为 key
- **WHEN** 生产者发送消息

View File

@@ -1,7 +1,19 @@
## MODIFIED Requirements
### Requirement: Kafka 心跳消息解码/解压
系统 MUST 能够将 Kafka 消息 value 解码为 JSON 对象或数组,并支持两层以内的编码/压缩组合。
#### Scenario: 两层以内解码成功
- **WHEN** Kafka 消息 value 为 UTF-8 JSON、base64(二进制)、或 gzip/deflate/raw-deflate/brotli 压缩二进制
- **THEN** 系统应按“最多两层”策略尝试解码/解压
- **AND** 成功时得到 JSON 对象或数组
#### Scenario: 解码失败
- **WHEN** Kafka 消息 value 无法被解码/解压为 JSON
- **THEN** 系统应记录错误并丢弃该消息
### Requirement: 心跳数据转换
系统必须能够将解包后的心跳数据转换为数据库存储格式。
系统 MUST 能够将解包后的心跳数据转换为数据库存储格式。
#### Scenario: 转换为 v2 明细表字段
- **WHEN** 心跳数据验证通过时

View File

@@ -1,10 +1,11 @@
## 1. Implementation
- [ ] 提供 PostgreSQL 建库脚本UTF-8 + 中文排序规则可选)
- [ ] 提供心跳明细表结构(必填字段、可选字段、约束、索引)
- [ ] 实现按 `ts_ms` 日分区与自动建分区机制
- [ ] 补充性能建议(索引策略、分区影响、聚合/物化视图建议)
- [ ] 产出 docsDB 表结构文档 + Kafka 生产者推送数据结构与方式
- [x] 提供 PostgreSQL 建库脚本UTF-8 + 中文排序规则可选)
- [x] 提供心跳明细表结构(必填字段、可选字段、约束、索引)
- [x] 实现按 `ts_ms` 日分区与自动建分区机制
- [x] 补充性能建议(索引策略、分区影响、聚合/物化视图建议)
- [x] 产出 docsDB 表结构文档 + Kafka 生产者推送数据结构与方式
- [ ] Processor实现 Kafka 心跳 value 的两层解码/解压与反序列化(需要对端样本/算法确认)
## 2. Validation
- [ ] 在可访问的 PostgreSQL 环境执行脚本并验证对象创建成功
- [ ] 检查约束与索引是否符合要求
- [x] 在可访问的 PostgreSQL 环境执行脚本并验证对象创建成功
- [x] 检查约束与索引是否符合要求