ClickHouse 常用于分析型查询,MQ 常用于异步写入和削峰。两者放到一起时,最重要的是把写入链路、消费状态和回滚验证拆清楚。
先画写入链路
链路要说明:
- 数据从哪里来。
- 谁发送消息。
- Topic 或队列是什么。
- 消费者如何处理。
- 写入哪张表。
- 失败如何重试。
- 重复消息如何幂等。
没有链路图,排查数据缺失会很痛苦。
工作项要按边界拆
可以拆成:
- 表结构设计。
- 消息格式。
- 生产者改造。
- 消费者改造。
- 批量写入策略。
- 失败重试。
- 数据校验。
- 监控告警。
这样每个工作项都能独立开发和验收。
消费状态要可观察
MQ 链路必须能看到:
- 消费进度。
- 消费延迟。
- 失败次数。
- 死信或异常消息。
- 写入耗时。
- ClickHouse 写入错误。
只看最终表数据,不足以判断链路是否稳定。
回滚要考虑数据
这类改造不能只回滚代码。
还要考虑:
- 已写入数据是否保留。
- 是否需要补偿删除。
- 是否要暂停消费者。
- 是否存在重复写入。
- 是否能重新消费。
数据链路回滚一定要提前写清。
维护建议
ClickHouse + MQ 项目可以用“链路图 + 工作项清单 + 校验 SQL + 回滚说明”四件套管理。
这样开发、测试和运维看到的是同一套事实。
正文完




