滴滴基于的一站式搜索中台实践
- 李夏昕
ElasticSearch 是基于 Lucene 实现的分布式搜索引擎,提供了海量数据实时检索和分析能力。滴滴从 2016 年 4 月开始组建团队,解决 ElasticSearch 在使用过程中遇到的性能问题。并且,随着业务体量的发展,滴滴构建了基于 ElasticSearch 的一站式搜索平台。InfoQ 邀请到了滴滴出行高级专家工程师、 QCon 全球软件开发大会(广州站) 讲师张亮,请他聊聊滴滴如何基于 ElasticSearch 打造存储成本低、系统稳定性好,易用的搜索中台。
ElasticSearch 在滴滴的应用场景
滴滴自 2016 年 4 月开始组建团队,解决 ElasticSearch 在使用过程中遇到的性能问题。搜索平台的建设是随着业务体量的发展逐步演进的,如今已经发展到有超过 3500+ ElasticSearch 实例, 5PB 的数据存储,峰值写入 TPS 超过了 2000W/S 的超大规模,每天近 10 亿次检索查询。
ElasticSearch 在滴滴有着非常丰富的应用场景:
- 为线上 核心搜索 业务提供引擎支持;
- 作为 **RDS **从库,海量数据检索需求;
- 解决公司 海量日志 检索问题;
- 为 安全场景 提供数据分析能力。
不同场景业务方对写入的及时性、查询的 RT、整体稳定性的要求都是不一样的,我们对平台提供的服务抽象为索引模板服务,用户可以自助开通相应的服务。
我们内部经过压测、线上调优以及引擎的一些优化,已经将最佳实践,沉淀到标准的 Docker 镜像中,个性化的需求都在索引模板的服务级别进行设置与管控,部分优化如下:
平台稳定性面临的风险与挑战
超大的集群规模和丰富的场景给滴滴 ElasticSearch 平台带来了极大的风险与挑战。主有以下几个方面:
-
线上业务场景
- 稳定性要求至少 99.99%,对查询的 90 分位性能抖动敏感;
- 架构层面需要支持多活的需求,对数据的一致性与及时性都有要求,必须保证数据的最终一致性,数据更新秒级可见;
- 不同线上业务,插件需求、索引分片规则都是多样化的;
- 众多独立集群如何快速平滑地进行滚动升级,保障的线上业务无影响。
-
准线上业务场景
- 离线快速导入时效性要求分钟级,实时导入 10 亿条数据需要 5 个小时,导入时在线资源消耗严重,线上服务基本不可用,导入成本消耗过大;
- 查询的多样性,14W+ 查询模板,单索引最高有 100+ 应用同时查询,在多租户场景下,如何保证查询的稳定性。
-
安全与日志场景
- 千万级别数据每秒的实时写入,PB 级日志数据的存储,对大规模 ElasticSearch 的集群提出诉求,但 ElasticSearch 有自己的元信息瓶颈,详见团队同学的分享: https://www.infoq.cn/article/SbfS6uOcF_gW6FEpQlLK;
- 查询场景不固定,单个索引几百亿级别的数据体量,需要保障不合理查询对集群与索引的稳定性风险可控;
- PB 级存储,查询频率低,但查询的时效性要求 S 级别返回,全部基于 SSD 盘,成本太高,需要在查询体验没有太大变化的情况下,降低整体的存储成本。
那么,如何解决这些问题呢?欢迎到 [QCon 全球软件开发大会(广州站)](https://www.6aiq.com/forw
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BB%B4%E6%BB%B4%E5%9F%BA%E4%BA%8E%E7%9A%84%E4%B8%80%E7%AB%99%E5%BC%8F%E6%90%9C%E7%B4%A2%E4%B8%AD%E5%8F%B0%E5%AE%9E%E8%B7%B5/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com