第三篇 压缩与采样

日志收上来之后,账单就来了:日均千万条日志,原文一天近 100 GB,网络、磁盘、对象存储全都按字节收费。好在日志天生有两个特点——内容重复度极高,且绝大多数日志没人看。前者意味着压缩能大幅瘦身,后者意味着采样能理直气壮地少存。这两件事做得好,成本能降一个数量级;做不好,要么压缩吃光 CPU,要么采样把排查现场丢了。

本篇按「压缩 → 采样 → 分词索引 → 滚动归档」的顺序展开:先比较 LZ4 与 Zstd 的取舍,再看全量与哈希采样怎么选,接着让日志可检索,最后把归档按时间与大小切干净。云产品侧涉及对象存储 COS 的存储类型选择与日志服务 CLS 的检索能力,性价比方案可参考 腾讯云 AI 数据处理平台 ADP 特惠。

本篇路线

节 主题 解决什么
3.1 压缩算法取舍 压得快还是压得小
3.2 采样策略 哪些日志可以少存
3.3 分词与索引 日志怎么搜得动
3.4 滚动归档 按时间与大小切分

篇章关系

第二篇解决了「收得上来」,本篇解决「存得起、找得到」:压缩与采样决定存储与带宽成本,分词索引决定检索能力,滚动归档决定冷数据的去向。第四篇再谈落盘与崩溃恢复。分布式中类似的「压一压、少存点」思路,可对照 Go 即时通讯实战 的消息分发章节。

延伸阅读

  • 压缩算法的取舍,见下一节 3.1。
  • 采样与降级,见 3.2。
  • 检索与分词,见 3.3。
  • 冷数据归档,见 对象存储与 Go 实战。