技术■腾讯万亿级 Elasticsearch 技术解密( 三 )
文章图片
文章图片
这里我们展开介绍下服务限流部分 。我们做了 4 个层级的限流工作:权限层级 , 我们支持 XPack 和自研权限来防止攻击、误操作;队列层级 , 通过优化任务执行速度、重复、优先级等问题 , 解决用户常遇到的 Master 任务队列堆积、任务饿死等问题;内存层级 , 我们从 ES 6.x 开始 , 支持在 HTTP 入口、协调节点、数据节点等全链路上进行内存限流 , 同时使用 JVM 内存、梯度统计等方式精准控制;多租户层级 , 我们使用 CVM/Cgroups 方案保证多租户间的资源隔离 。
这里详细介绍下聚合场景限流问题 , 用户在使用 ES 进行聚合分析时 , 经常遇到因聚合分桶过多打爆内存的问题 。官方在 ES 6.8 中提供 max_buckets 参数控制聚合的最大分桶数 , 但这个方式局限性非常强 。在某些场景下 , 用户设置 20 万个分桶可以正常工作 , 但在另一些场景下 , 可能 10 万个分桶内存就已经打爆 , 这主要取决于单分桶的大小 , 用户并不能准确把握该参数设置为多少比较合适 。我们在聚合分析的过程中 , 采用梯度算法进行优化 , 每分配 1000 个分桶检查一次 JVM 内存 , 当内存不足时及时中断请求 , 保证 ES 集群的高可用 。具体可参考 PR ES-46751 /47806 。
我们当前的限流方案 , 能够大幅提升在异常查询、压力过载、单节点故障、网络分区等场景下 , ES 服务的稳定性问题 。但还有少量场景没有覆盖完全 , 所以我们目前也在引入混沌测试 , 依赖混沌测试来覆盖更多异常场景 。
文章图片
文章图片
前面我们介绍了高可用解决方案 , 下面我们来介绍成本方面的优化实践 。成本方面的挑战 , 主要体现在以日志、监控为代表的时序场景对机器资源的消耗 , 我们对线上典型的日志、时序业务进行分析 , 总体来看 , 硬盘、内存、计算资源的成本比例接近 8:4:1 , 硬盘、内存是主要矛盾 , 其次是计算成本 。
而对时序类场景进行分析 , 可以发现时序数据有很明显的访问特性 。一是冷热特性 , 时序数据访问具有近多远少的特点 , 最近 7 天数据的访问量占比可达到 95%以上;历史数据访问较少 , 且通常都是访问统计类信息 。
文章图片
文章图片
基于这些瓶颈分析和数据访问特性 , 我们来介绍成本优化的解决方案 。
硬盘成本方面 , 由于数据具有明显的冷热特性 , 首先我们采用冷热分离架构 , 使用混合存储的方案来平衡成本、性能;其次 , 既然对历史数据通常都是访问统计信息 , 那么以通过预计算来换取存储和性能 , 后面会展开介绍;如果历史数据完全不使用 , 也可以备份到更廉价的存储系统;其他一些优化方式包含存储裁剪、生命周期管理等 。
内存成本方面 , 很多用户在使用大存储机型时会发现 , 存储资源才用了百分之二十 , 内存已经不足 。其实基于时序数据的访问特性 , 我们可以利用 Cache 进行优化 , 后面会展开介绍 。
文章图片
文章图片
我们展开介绍下 Rollup 部分 。官方从 ES 6.x 开始推出 Rollup , 实际上腾讯在 5.x 已经开始这部分的实践 。Rollup 类似于大数据场景下的 Cube、物化视图 , 它的核心思想是通过预计算提前生成统计信息 , 释放掉原始粒度数据 , 从而降低存储成本、提高查询性能 , 通常会有数据级的收益 。这里举个简单的例子 , 比如在机器监控场景下 , 原始粒度的监控数据是 10 秒级的 , 而一个月之前的监控数据 , 一般只需要查看小时粒度 , 这即是一个 Rollup 应用场景 。
推荐阅读
- 快充@三口65瓦+氮化镓技术!征拓新品:小却如此强悍
- #程序员#腾讯女程序员相亲遭对方嫌弃,晒出聊天记录感叹:太难了
- 【】直播行业打响“技术战”,酷狗3D虚拟直播脱颖而出,优势何在?
- 『腾讯科技』淘宝天猫蒋凡在阿里内网回应传闻:深表歉意,恳请公司展开调查
- 「腾讯」腾讯视频盈利难:2019年亏损30亿 盗墓题材连拍五年没水花
- 技术@全球首套规模化太阳燃料合成示范项目试车成功丨转化亮点
- 服务@云市场跨步式发展 打造ToB云市场阿里腾讯外“第三股势力”
- [技术]安芯半导体再出货一台光刻机,价值千万元!满足国内芯片企业需求
- 『技术』鹤壁:全面提升科技创新能力为建设高质量富美鹤城贡献科技力量(1)
- 技术@为楼宇安上“智慧大脑”,翠苑街道开创“一平台”数据互通模式
