feat: 实现Redis集成与Kafka消息处理优化
- 新增Redis集成模块,支持心跳写入与控制台日志队列 - 优化Kafka消费者实现,支持多实例与自动重连 - 改进消息处理器,支持批量处理与多层解码 - 更新数据库表结构,调整字段类型与约束 - 添加Redis与Kafka的配置项和环境变量支持 - 补充测试用例和文档说明
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: 数据库表结构管理
|
||||
系统必须包含数据库表结构的定义和管理机制。
|
||||
系统 MUST 提供数据库表结构的定义和管理机制。
|
||||
|
||||
#### Scenario: 表结构初始化(高吞吐分区表)
|
||||
- **WHEN** 系统首次启动或部署数据库时
|
||||
@@ -18,7 +18,7 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 高吞吐写入友好
|
||||
系统在高吞吐场景(约 5 万条/分钟量级)下应避免单点瓶颈。
|
||||
系统 MUST 在高吞吐场景(约 5 万条/分钟量级)下避免单点瓶颈。
|
||||
|
||||
#### Scenario: 批量写入与分区裁剪
|
||||
- **WHEN** 进行批量写入
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 心跳消息载荷格式(生产者约束)
|
||||
Kafka 心跳消息必须包含数据库落库所需的必填字段,并采用 UTF-8 编码。
|
||||
Kafka 心跳消息 MUST 包含数据库落库所需的必填字段,并采用 UTF-8 编码。
|
||||
|
||||
#### Scenario: JSON 心跳消息
|
||||
- **WHEN** 生产者向主题推送心跳消息
|
||||
@@ -10,6 +10,11 @@ Kafka 心跳消息必须包含数据库落库所需的必填字段,并采用 U
|
||||
- **AND** 可选包含 extra(json object)
|
||||
|
||||
### Requirement: 分区键友好的 Kafka Key
|
||||
系统 MUST 支持使用 `hotel_id:device_id` 作为 Kafka message key 以获得更好的分区与有序性。
|
||||
|
||||
#### Scenario: 缺失 key 仍可处理
|
||||
- **WHEN** 消息未携带 key
|
||||
- **THEN** 系统仍应能够消费与处理该消息
|
||||
|
||||
#### Scenario: 使用 device_id 作为 key
|
||||
- **WHEN** 生产者发送消息
|
||||
|
||||
@@ -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** 心跳数据验证通过时
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
## 1. Implementation
|
||||
- [ ] 提供 PostgreSQL 建库脚本(UTF-8 + 中文排序规则可选)
|
||||
- [ ] 提供心跳明细表结构(必填字段、可选字段、约束、索引)
|
||||
- [ ] 实现按 `ts_ms` 日分区与自动建分区机制
|
||||
- [ ] 补充性能建议(索引策略、分区影响、聚合/物化视图建议)
|
||||
- [ ] 产出 docs:DB 表结构文档 + Kafka 生产者推送数据结构与方式
|
||||
- [x] 提供 PostgreSQL 建库脚本(UTF-8 + 中文排序规则可选)
|
||||
- [x] 提供心跳明细表结构(必填字段、可选字段、约束、索引)
|
||||
- [x] 实现按 `ts_ms` 日分区与自动建分区机制
|
||||
- [x] 补充性能建议(索引策略、分区影响、聚合/物化视图建议)
|
||||
- [x] 产出 docs:DB 表结构文档 + Kafka 生产者推送数据结构与方式
|
||||
- [ ] Processor:实现 Kafka 心跳 value 的两层解码/解压与反序列化(需要对端样本/算法确认)
|
||||
|
||||
## 2. Validation
|
||||
- [ ] 在可访问的 PostgreSQL 环境执行脚本并验证对象创建成功
|
||||
- [ ] 检查约束与索引是否符合要求
|
||||
- [x] 在可访问的 PostgreSQL 环境执行脚本并验证对象创建成功
|
||||
- [x] 检查约束与索引是否符合要求
|
||||
|
||||
Reference in New Issue
Block a user