1 前言
在《ElasticSearch降本增效常见的方法》一文中曾提到过zstd压缩算法[1],一步一个脚印我们终于在京东ES上线支持了zstd;我觉得促使目标完成主要以下几点原因:
-
Elastic官方原因:zstd压缩算法没有在Elastic官方的开发计划中;Elastic的licenes变更,很多功能使用受限
-
ES产品竞争力:提升京东ES产品在业界的竞争力,两大云友商和其他大厂都在陆续支持,在对外比拼的时候,我们需要提升我们这方面的能力
-
信创大背景:我们需要对开源组件有更好的自主管控和建设能力
-
京东零售ES与云ES产品融合:有更好的机会去打磨我们的ES内核
-
降本增效:ztsd压缩算法,能够在降低存储成本的前提下,保证性能几乎不受损,写入性能还有所提升
2 测试结果
测试集群配置:4c8g; 3个数据节点;
测试索引设置:3主分片1副本
测试数据mapping: keyword字段14个,geo_point字段3个,integer字段2个,text字段1个,date字段:2个,ip类型字段1个,boolean字段1个
在考虑到读写性能和压缩比均衡的情况下,我们推荐使用jd_zstd(压缩等级3):
-
jd_zstd(压缩等级3)写入性能相对于best_compression提升38.46%,相对于lz提升5.88%;
-
jd_zstd(压缩等级3)存储相对于lz4节省24%,与best_compression基本持平,单位写的gb实际是要比best_compression的存储量小。
下表为es6.8.23版本,在cpu压测到100%时,不通压缩算法下ES的bulk、termquery、rangequery、matchquery等TPS以及压缩比测试结果:
| 压缩算法 | bulk | termquery | rangequery | matchquery | 数据存储大小(580W条文档)segment forcemerge为1个 | 压缩率,基准为lz(ES默认为lz压缩算法) |
|---|---|---|---|---|---|---|
| lz4 | 34K | 7.7K | 790 | 450 | 13gb | - |
| best_compression | 26K | 4.7K | 780 | 430 | 10gb | 76.9% |
| jd_zstd(压缩等级3) | 36K | 5.4K | 790 | 450 | 10gb | 76.9% |
| jd_zstd(压缩等级6) | 32K | 5.6K | 790 | 460 | 9.8gb | 75.38% |
| jd_zstd(压缩等级9) | 25K | 5.5K | 790 | 450 | 9.8gb | 75.38% |
注意⚠️:测试数据仅供参考,实际情况与用户数据有关
3 适用场景
写多读少的场景,比如日志和监控场景。

最低0.47元/天 解锁文章
2250

被折叠的 条评论
为什么被折叠?



