腾讯万亿级Elasticsearch技术解密

Elasticsearch(ES)作为开源首选的分布式搜索分析引擎 , 通过一套系统轻松满足用户的日志实时分析、全文检索、结构化数据分析等多种需求 , 大幅降低大数据时代挖掘数据价值的成本 。腾讯在公司内部丰富的场景中大规模使用 ES , 同时联合 Elastic 公司在腾讯云上提供内核增强版的 ES 云服务 , 大规模、丰富多样的的使用场景推动着腾讯对原生 ES 进行持续的高可用、高性能、低成本优化 。今天给大家分享近期在 Elastic 中国开发者大会上的演讲内容:腾讯万亿级 Elasticsearch 技术解密 。
一、ES 在腾讯的应用场景

腾讯万亿级Elasticsearch技术解密

文章插图
本次分享的主要内容包含:首先介绍 ES 在腾讯的丰富应用场景及各种场景的典型特点;然后给出我们在大规模、高压力、丰富多样的使用场景下遇到的挑战;针对这些挑战 , 我们重点介绍腾讯在 ES 内核方面进行的高可用性、低成本、高性能等优化实践;最后简单分享我们在 ES 未来规划以及开源贡献方面的思考 。
腾讯万亿级Elasticsearch技术解密

文章插图
我们先来看下 ES 在腾讯的应用场景 。最初我们使用 ES 于日志实时分析场景 , 典型日志如下:运营日志 , 比如慢日志、异常日志 , 用来定位业务问题;业务日志 , 比如用户的点击、访问日志 , 可以用来分析用户行为;审计日志 , 可以用于安全分析 。ES 很完美的解决了日志实时分析的需求 , 它具有如下特点:
  • Elastic 生态提供了完整的日志解决方案 , 任何一个开发、运维同学使用成熟组件 , 通过简单部署 , 即可搭建起一个完整的日志实时分析服务 。
  • 在 Elastic 生态中 , 日志从产生到可访问一般在 10s 级 。相比于传统大数据解决方案的几十分钟、小时级 , 时效性非常高 。
  • 由于支持倒排索引、列存储等数据结构 , ES 提供非常灵活的搜索分析能力 。
  • 支持交互式分析 , 即使在万亿级日志的情况下 , ES 搜索响应时间也是秒级 。
日志是互联网行业最基础、最广泛的数据形式 , ES 非常完美的解决了日志实时分析场景 , 这也是近几年 ES 快速发展的一个重要原因 。
腾讯万亿级Elasticsearch技术解密

文章插图
第二类使用场景是搜索服务 , 典型场景包含:商品搜索 , 类似京东、淘宝、拼多多中的商品搜索;App 搜索 , 支持应用商店里的应用搜索;站内搜索 , 支持论坛、在线文档等搜索功能 。我们支持了大量搜索服务 , 它们主要有以下特点:
  • 高性能:单个服务最大达到 10w+ QPS , 平响 20ms~ , P95 延时小于 100ms 。
  • 强相关:搜索体验主要取决于搜索结果是否高度匹配用户意图 , 需要通过正确率、召回率等指标进行评估 。
  • 高可用:搜索场景通常要求 4 个 9 的可用性 , 支持单机房故障容灾 。任何一个电商服务 , 如淘宝、京东、拼多多 , 只要故障一个小时就可以上头条 。

腾讯万亿级Elasticsearch技术解密

文章插图
第三类使用场景是时序数据分析 , 典型的时序数据包含:Metrics , 即传统的服务器监控;APM , 应用性能监控;物联网数据 , 智能硬件、工业物联网等产生的传感器数据 。这类场景腾讯很早就开始探索 , 在这方面积累了非常丰富的经验 。这类场景具有以下特点:
  • 高并发写入:线上单集群最大规模达到 600+节点、1000w/s 的写入吞吐 。
  • 高查询性能:要求单条曲线 或者单个时间线的查询延时在 10ms~ 。
  • 多维分析:要求灵活、多维度的统计分析能力 , 比如我们在查看监控的时候 , 可以按照地域、业务模块等灵活的进行统计分析 。
二、遇到的挑战
前面我们介绍了 ES 在腾讯内部的广泛应用 , 在如此大规模、高压力、丰富使用场景的背景下 , 我们遇到了很多挑战 , 总体可以划分为两类:搜索类和时序类 。
腾讯万亿级Elasticsearch技术解密

文章插图
首先 , 我们一起看看搜索类业务的挑战 。以电商搜索、APP 搜索、站内搜索为代表 , 这类业务非常重视可用性 , 服务 SLA 达到 4 个 9 以上 , 需要容忍单机故障、单机房网络故障等;同时要求高性能、低毛刺 , 例如 20w QPS、平响 20ms、P95 延时 100ms 。总之 , 在搜索类业务场景下 , 核心挑战点在于高可用、高性能 。


推荐阅读