项目简介
Zstandard(简称 Zstd)是由 Facebook(现 Meta)开发的实时压缩算法及参考实现,于 2015 年开源发布。它的核心设计目标是提供一种兼顾高压缩比与高速度的压缩方案,填补 gzip 与 LZ4 之间的性能空白。Zstd 已被 Linux 内核原生支持(Btrfs、zram、内核模块 zstd.ko),并被收录为 RFC 8478 国际标准。无论是日志压缩、文件系统、网络传输还是游戏资源打包,Zstd 都在成为业界默认的首选压缩引擎。
GitHub 数据
| 项目 | 数据 |
|---|---|
| 仓库 | facebook/zstd |
| Stars | 27,218 |
| Forks | 2,505 |
| 许可证 | BSD + GPLv2 双许可证 |
| 主要语言 | C |
| 当前版本 | v1.5.7(活跃维护) |
核心功能
- 1~22 级压缩等级:从快速压缩(Level 1)到极致压缩(Level 22),按场景自由调节
- 字典压缩:针对小数据块的场景,使用训练字典可额外提升 10%~20% 压缩比
- 多线程压缩:v1.5.7 起默认开启多线程,充分利用多核 CPU
- 训练字典 + 覆盖字典:支持从样本集训练专属压缩字典,显著提升特定领域数据的压缩效果
- 流式压缩与解压:适合网络传输等无法一次性获取全部数据的场景
- Linux 内核原生支持:Btrfs 文件系统透明压缩、zram 交换压缩均内置 Zstd
- Native ZSTD_CHUNKS:原生支持块级裸流处理,减少拷贝开销
- 70+ 语言移植:从 Rust、Go、Python 到 JavaScript、Java,几乎覆盖所有主流语言
v1.5.7 亮点
- 多线程默认开启,无需手动配置
- 小数据块处理性能提升 10%~20%
- 全新的块级裸流优化,减少不必要的内存拷贝
- 更低的内存占用,适合嵌入式与资源受限环境
技术栈
- 核心实现:C 语言,追求极致性能
- C++ 绑定:官方支持的 C++ 封装
- 70+ 语言移植:社区驱动,覆盖主流生态
- 可选 ASM 优化:针对 x86/x64 架构的手写汇编优化路径
- 标准合规:遵循 RFC 8478(Zstandard Compression Algorithm and Application)
使用方式 / 安装
# Linux / macOS 通过包管理器安装
apt install zstd # Debian/Ubuntu
brew install zstd # macOS
# 编译安装
git clone https://github.com/facebook/zstd.git
cd zstd && make && sudo make install
# 基础用法
zstd input.txt # 压缩
zstd -d input.txt.zst # 解压
zstd -b input.txt # 基准测试
# 多线程压缩
zstd -T0 input.txt # 使用所有 CPU 核心
# 指定压缩等级
zstd -22 input.txt # 极致压缩
zstd --fast=10 input.txt # 快速模式
适用场景
- 日志压缩:服务器日志实时压缩存储,平衡写入性能与磁盘占用
- 文件系统透明压缩:Btrfs/ZFS 启用 Zstd 压缩,节省存储空间无明显性能损失
- 网络传输压缩:API 响应体、消息队列、远程同步场景中的数据压缩
- 数据库页面压缩:MySQL/PostgreSQL 可借助 Zstd 压缩数据页
- 游戏资源打包:Unity/Unreal 引擎资源包使用 Zstd 加速加载
- 大数据与数据湖:Apache Hadoop、Spark 等生态中对中间数据的压缩存储
竞品对比
| 算法 | 压缩比 | 压缩速度 | 解压速度 | 备注 |
|---|---|---|---|---|
| Zstd ⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 最佳平衡点 |
| gzip | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | 速度慢,压缩比低 |
| Brotli | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | Google 开发,侧重 Web 静态压缩 |
| LZ4 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 极快但压缩比低 |
| xz | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐ | 极高压缩比,极慢 |
Zstd 已在 Facebook(Meta)内部大规模使用多年,每天处理 PB 级别的数据。从 Web 服务器的响应压缩到数据中心的冷热数据分层,Zstd 提供了一个宽广的速度/压缩比光谱——从接近 LZ4 的极速模式到接近 xz 的高压缩模式,开发者可以在同一个算法框架下按需选择。加上 Linux 内核原生支持、完整的生态移植和活跃的社区维护,Zstd 已成为压缩领域的「默认选项」。
参考资料
- GitHub: facebook/zstd
- RFC 8478 - Zstandard Compression Algorithm and Application
- Zstd 官方文档
- Linux 内核 Zstd 文档
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/dev/zstd.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)