外部构建segment的功能也在我们的规划中 。
2 分级存储ES实现降本增效的另外一个方向:分级存储,该解决方案主要是针对数据量大查询少且对查询耗时不太敏感的业务 。分级存储,比较成熟的解决方案有es冷热架构和可搜索快照 。
2-1 冷热架构冷热架构适用场景:时序型数据或者同一集群中同时存在这两个索引(一个热数据,另外一个冷数据)
es冷热架构架构,该功能已经在京东云上线有一段时间了,欢迎大家根据自己的业务形态进行试用,冷数据节点开启如图2-1所示
图 2-1 冷数据节点开启
建议如果索引表是按天/小时,这种周期存储的数据,且数据查询具有冷热性,建议开启冷节点;开启冷节点后你可能会获得如下的收益:
- 开启冷节点后可以降低你的存储成本,因为存放冷节点的索引我们可以选择减少副本数、冷节点的存储介质更便宜
- 集群可以存放更多的数据
- 冷数据forcemerge,提升冷数据的查询性能
- 冷数据从热节点迁移走之后,减少热节点的资源占用,从而使热查询更快
node.attr.box_type: hotes的warm节点增加如下配置
node.attr.box_type: warm热数据索引setting增加如下配置,即可限制shard分配在hot节点
"index.routing.allocation.require.box_type": "hot"当数据查询减弱,我们通过如下配置,即可使数据由hot节点迁移到warm节点
"index.routing.allocation.require.box_type": "warm"2-2 可搜索快照可搜索快照是在冷热架构的基础上更进一步的分级存储,在之前我们将数据快照之后是无法对快照的数据进行搜索,如果要对快照的数据进行搜索,则需将快照数据先restore(restore的过程可能会比较长)之后才能被搜索 。
在引入可搜索快照之后,我们可以直接搜索快照中的数据,大大降低了没必要的资源使用.
3 其他3-1 数据压缩除了从资源的角度进行降低存储成本之外,基于数据自身的特性,使用优秀的压缩算法也是一种必不可少的搜索;针对时序数据facebook开源了一个非常优秀的压缩算法zstd,目前已经在业界被大量使用,国内的两大云友商已经在es进行了实现,腾讯云针对zstd的测试结果如表3-1所示;阿里云在TimeStream功能中使用了zstd 。
表 3-1 三种压缩算法的对比测试结果
目前在lucene的代码库中也有开源爱好者提交了custom codec providing Zstandard compression/decompression (zstd pr)
3-2 off heapes单个节点存储数据量受到jvm堆内存的限制,为了使单个节点能够存储更多的数据,因此我们需要减少堆内存中的数据 。
ES 堆中常驻内存中占据比重最大是 FST,即 tip(terms index) 文件占据的空间,1TB 索引大约占用2GB 或者更多的内存,因此为了节点稳定运行,业界通常认为一个节点 open 的索引不超过5TB 。现在,从 ES 7.3版本开始,将 tip 文件修改为通过mmap的方式加载,这使 FST占据的内存从堆内转移到了堆外(即off Heap技术 )由操作系统的 pagecache 管理[6] 。
使用esrally官方数据集geonames写入索引1TB,使用 _cat/segments API 查看 segments.memory内存占用量,对比 offheap 后的内存占用效果,如表3-2所示;JVM 内存占用量降低了78%左右
表 3-2 segments.memory内存占用量
4 参考[1] Indexing Service[2] ES-Fastloader[3] 大规模测试新的 Elasticsearch 冷层可搜索快照[4] Introducing Elasticsearch searchable snapshots[5] 7.7 版本中的新改进:显著降低 Elasticsearch 堆内存使用量[6] Elasticsearch 7.3 的 offheap 原理
经验总结扩展阅读
- 云原生之旅 - 6)不能错过的一款 Kubernetes 应用编排管理神器 Kustomize
- 京东直播带货费用是多少
- Windows下自动云备份思源笔记到Gitee
- 云上当空接龙规则(接龙规则口诀)
- 云上空当接龙怎么玩(空当接龙怎么玩教学说明)
- 京广速递和京东物流是一家吗
- 京广速递是京东旗下的吗
- 京广速递为啥是京东送货
- 京广快递由京东配送吗
- 网易云音乐音效怎么定制设置方法