查询方面 , 我们通过优化段文件合并策略 , 对于非活跃段文件会自动触发合并 , 收敛段文件数以降低资源开销 , 提升查询性能 。根据每个段文件上记录的最大最小值进行查询剪枝 , 提升查询性能 40% 。通过 CBO 策略 , 避免缓存较大开销的 Cache 操作导致产生 10+倍的查询毛刺 , 具体可参考Lucene-9002 。另外还包括优化 Composite 聚合中的性能问题 , 实现真正的翻页操作 , 以及优化带排序场景的聚合使得性能提升 3-7 倍 。此外 , 我们也在尝试通过一些新硬件来优化性能 , 比如说英特尔的 AEP、Optane、QAT 等 。
4.3 成本优化

文章插图
成本 方面主要体现在以日志、监控为代表的时序场景对机器资源的消耗 。结合线上典型的日志、时序业务统计数据发现 , 硬盘、内存、计算资源的成本比例接近 8:4:1 。可以得出硬盘、内存是主要矛盾 , 其次是计算成本 。而这类时序类场景有很明显的访问特性 , 也就是数据具有冷热特性 。时序数据访问具有近多远少的特点 , 比如近 7 天数据的访问量占比可达到 95%以上 , 而历史数据访问较少 , 并且通常都是访问统计类信息 。

文章插图
硬盘成本 方面 , 由于数据具有明显的冷热特性 , 我们采用冷热分离架构 , 使用混合存储的方案来平衡成本和性能 。由于历史数据通常只是访问统计信息 , 我们采用预计算 Rollup 换取存储和查询性能 , 类似物化视图 。对于完全不使用历史数据 , 也可以备份到更廉价的存储系统如 cos 。其他一些优化方式包括多盘策略兼容数据吞吐与数据容灾 , 以及通过生命周期管理等定期删除过期数据等 。
内存成本 方面 , 我们发现特别是大存储机型 , 存储资源采用了 20%内存已不足 。为了解决内存不足问题 , 我们采用 Off-Heap 技术 , 来提升堆内内存利用率 , 降低 GC 开销 , 并且提升单个节点管理磁盘的能力 。将内存占比较大的 FST 移到堆外管理 , 通过堆内存放堆外对象地址 , 避免堆内外数据拷贝 。通过 JAVA 弱引用机制实现堆外对象内存回收 , 进一步提升内存使用率 。实现 32GB 堆内内存可管理 50 TB 左右磁盘空间 , 较原生版本有 10 倍提升 , 并且性能持平 , 而 GC 优势提升明显 。
除了内核层面的优化 , 该平台层通过管控平台 , 支持云上服务资源管理、实例实例管理等实现服务托管 。方便快捷进行实例创建和规格调整 。通过运维支撑平台中的监控系统、运维工具等保障服务质量 。并通过正在建设的智能诊断平台发现服务潜在问题 , 实现了对内外部提供稳定可靠的 ES 服务 。

文章插图
腾讯内部 , 我们通过主导 ES 产品开源协同 , 发现潜在问题 , 共同优化完善 ES , 避免不同的团队重复踩坑 。同时我们也将优秀的方案积极贡献给社区 , 和官方及社区的 ES 爱好者们共同推动 ES 的发展 。以腾讯 ES 内核研发为代表的团队 , 截至目前我们共提交了 60 多个 PR , 其中有 70% 被合并 , 公司内 ES 开源协同 PMC 成员共有 6 位 ES/Lucene 社区 contributor 。
5.后记Elasticsearch 在腾讯内外部广泛应用于日志实时分析、时序数据分析、全文检索等场景 。目前单集群规模达到千级节点、万亿级吞吐 。通过内核增强版 ES 为大家提供高可靠 , 低成本 , 高性能的搜索分析服务 。后续我们仍然需在可用性 , 性能和成本等方面持续优化 ES 。比如集群可扩展性不足问题 , 通过优化集群扩展性支持百万级分片秒级创建 index 。ES 的存储成本问题 , 目前正在研发存储与计算分离方案 , 进一步缩减成本 , 提升性能 。以及存在使用和维护成本高的问题 , 后续通过多级分区、智能诊断等提升 ES 的自动化和故障自愈能力 , 降低用户使用和维护成本 。未来 , 也会进一步探索 ES 在多维分析领域的其他可能性 。持续在大数据领域提供更有价值的搜索分析服务 。
推荐阅读
- PyCharm 快速上手指南!你还在等什么
- 酱香茶叶蛋的做法,快速茶叶蛋的做法是什么
- 万字干货,Python语法大合集,一篇文章带你入门
- 快速了解安吉白茶,福鼎白茶和安吉白茶有什么区别
- 韩国茶文化的发展介绍,茶文化引领信阳茶叶产业快速发展
- 耳机|只要199!一加耳机双发:充电10分钟 听歌20小时
- 河南开封茶产业,茶文化引领信阳茶叶产业快速发展
- 如何让百度快速收录我们的网站
- 很简单茶叶蛋的做法,快速茶叶蛋的做法是什么
- 简单、快速解决系统分区C盘空间不足的3种方法
