fix(syslog-consumer-rule): 解耦统计物化并解决多实例达梦死锁

- 将设备、规则和采集任务业务统计改为专用 Kafka Topic 异步物化
- 使用维度 ID 作为 Kafka key,保证同一统计维度串行更新
- 物化过程读取小型统计表精确值,确保重复消费不会重复计数
- 增加提交后发布、失败重试及定时小表对账补偿
- 固定日统计聚合键写入顺序,完善达梦死锁识别和事务重试
- JSON 解析失败直接转为非标日志,避免进入 DLT 重试链路
- 非标日志使用独立异步队列,不再阻塞正常消息 Kafka ACK
- Kafka 升级脚本新增 STATS.MATERIALIZE Topic
- 增加统计物化状态指标、配置示例及单元测试
This commit is contained in:
王绍宏
2026-09-11 20:42:22 +08:00
parent 2def445537
commit c1472b9a95
24 changed files with 1123 additions and 55 deletions
@@ -17,3 +17,14 @@ NORMALIZATION_RULE_SELECTION_AMBIGUOUS_FALLBACK=LOWEST_RULE_ID
NORMALIZATION_RULE_SELECTION_DETAIL_LOG_ENABLED=false
NORMALIZATION_RULE_SELECTION_EXPLICIT_ENABLED=true
NORMALIZATION_RULE_SELECTION_AUTOMATIC_FALLBACK_ENABLED=true
# 统计投影解耦:三个 syslog-consumer-rule 实例保持完全相同的 Topic 与 Group ID。
STATS_MATERIALIZATION_ENABLED=true
STATS_MATERIALIZATION_TOPIC=agent-01-syslog-topic.STATS.MATERIALIZE
STATS_MATERIALIZATION_GROUP_ID=agent-01-syslog-group-stats-materialize
STATS_MATERIALIZATION_LISTENER_CONCURRENCY=1
STATS_MATERIALIZATION_PUBLISH_INTERVAL_MS=200
STATS_MATERIALIZATION_PUBLISH_MAX_BATCH_SIZE=1000
STATS_MATERIALIZATION_MAX_CONCURRENCY_RETRIES=3
STATS_MATERIALIZATION_CONCURRENCY_RETRY_BACKOFF_MS=50
STATS_MATERIALIZATION_RECONCILE_INTERVAL_MS=60000