第四篇 持久化与热更新
日志收齐了、压好了、采完样了,最后一关是把它稳稳落盘。落盘听着像「写文件」,真做起来全是问题:内存里攒多少才往下刷?机器突然断电,没刷的那部分日志是不是就没了?线上想改个采样率,难道要重启整条管道?
这三问分别对应本篇的三块骨头。RocksDB 负责把日志又快又能找回地写下去,写缓冲决定攒批与刷盘的节奏,热更新让配置改动不打断采集,崩溃恢复则托住「不丢」这条底线。本篇是整条管道的收口,前面跑得再快,崩了恢复不回来,全部清零。
本篇路线
| 节 | 主题 | 解决什么 |
|---|---|---|
| 4.1 | RocksDB 分段 | 落盘存哪、怎么分段 |
| 4.2 | 写入路径 | 攒多少刷多少、何时 stall |
| 4.3 | 热更新 | 改配置不重启 |
| 4.4 | 崩溃恢复 | WAL 重放与不丢 |
篇章关系
本篇承接第三篇的压缩与采样——压缩省的是带宽,落盘保的是性命。写缓冲与通道背压是同一根控制链上的两级,可对照第二篇的 mpsc 有界通道一起看;热更新的原子替换手法,在采集偏移的持久化里也用过。存储介质与云盘规格决定参数怎么调,部署侧可参考 腾讯云 AI 数据处理平台 ADP 特惠。
延伸阅读
- 落盘结构怎么选,见下一节 4.1。
- 写缓冲与背压的联动,见 4.2。
- 通道背压的基础,见 Go 微服务实战。
