PCon全球产品创新大会9折购票中,立减¥480!查看上线日程 了解详情
写点什么

滴滴基于 ElasticSearch 的一站式搜索中台实践

2019 年 5 月 15 日

滴滴基于 ElasticSearch 的一站式搜索中台实践

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 全球软件开发大会(广州站)现场与我面对面交流。


如何打造“存储成本低”的搜索中台

目前,在日志与安全分析场景下,存储成本压力很大,属于典型的“写多查少”的场景,我们对存储成本的耗散点进行了深入的分析,整体情况如下:



针对资源耗散点,我们在架构层面进行了优化,整体成本降低了 30%,累积节省了 2PB 的存储,分别从以下几个方面进行了优化


  • 存储索引分离:日志原文与索引进行分开存储



  • 不合理的索引字段 Mapping 自动优化



  • 冷热数据进行了分级存储



  • ES On Docker&Ceph 改造



未来发展规划

基于 ElasticSearch 的搜索中台给用户带来的收益


  • 服务了超过 1200+ 平台业务方,其中 20+ 线上 P0 级应用,200+ 准实时应用;

  • 索引服务接入效率从原来的两周降低到 5 分钟;

  • 服务稳定性有保障:线上场景 99.99%,日志场景 99.95%;

  • 高频运维操作一键自助完成,90% 的问题,5 分钟完成定位;

  • 整体存储成本是业内云厂商的 1/3。


不足点


  • 目前滴滴 90% 的集群还是在 ElasticSearch 2.3.3 版本,内部修复的 BUG 与优化,无法跟社区进行同步;

  • 目前通过 ES-GateWay 的方式支持了多集群方案很好的满足了业务发展的需求,但是集群变多之后的,版本维护与升级、整体资源利用率提升、容量规划都变得非常艰难。


发展规划


  • 解架构之“熵”

  • 突破引擎元数据瓶颈,提升运维效率,降低成本->ES - Federation;

  • GateWay 能力插件式下沉引擎,减少中间环节,与社区融合,优化性能。

  • 提引擎迭代效率

  • 100 个节点集群滚动重启时长从 2 天提升至 1 小时;

  • 架构层面解决跨大版本升级之“痛” 2.2.3 -> 6.6.1 http restful。

  • 聚焦价值问题

  • 多租户查询、CBO、RBO 的查询优化器建设;

  • 数据体系化->数据智能化;

  • 基于 Ceph、Docker 改造 ElasticSeach,支持 Cloud Native 的存储计算分离。


嘉宾简介


张亮,滴滴出行高级专家工程师


曾任华为南研所网盘研发工程师;2014 年 4 月至今任职滴滴出行大数据架构部高级专家工程师。在滴滴任职 5 年,经历从无到有组建团队,主持构建过任务调度系统、业务监控系统、链路跟踪与诊断系统、数据同步中心等架构设计与研发工作,目前在负责数据通道、kafka 服务、数据检索的引擎建设工作,具有丰富的高并发、高吞吐场景的架构设计与研发经验。


另外,张亮将在 5 月 27-28 日的QCon 全球软件开发大会(广州站)上分享「PB级数据检索平台 | ElasticSearch在滴滴的实践」,会有更多干货内容,感兴趣的同学可以到现场与张亮老师面对面交流。目前,大会倒计时 10 天,日程已经上线,所剩席位已经不多,想参与的小伙伴抓紧时间抢票锁定席位啦!有任何购票问题,欢迎咨询票务小助手鱼丸:13269078023(微信同号)。


2019 年 5 月 15 日 13:1126393

评论

发布
暂无评论
发现更多内容

面试拜佛保过?圈内罕见阿里面试官手册,2021最强面试笔记非它莫属

云流

Java 程序员 架构 面试

区块链下乡

CECBC区块链专委会

区块链

前端开发:数据处理方法分享(其一)

三掌柜

vue.js 前端 3月日更

渣硕试水字节跳动,本以为简历都过不了,123+HR面直接拿到意向书

云流

Java 程序员 架构 面试

Python-计算机视觉-OpenCV-video

Aldeo

Python OpenCV Video

如何将多个目录下的文件汇总到一个文件夹

IT蜗壳-Tango

3月日更 IT蜗壳教学

(Day30) 谁来驱动变革

mtfelix

28天写作 bewriting

【Axure9百例NO.45】中继器的不同场景下的样式处理

zhuchuanming

原型设计 Axure 交互原型

《Redis 核心技术与实战》学习笔记 07

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

Kubernetes认证管理员

云原生

Kubernetes 云原生 k8s CKA

Python API 邮件发送测试

HoneyMoose

产品经理能力不够,产品方法论来凑

lenka

3月日更

uni-app跨端开发H5、小程序、IOS、Android(七):uni-app渲染

黑马腾云

html5 uni-app 前端 3月日更

中国最可靠的 Go 模块代理

happlyfox

学习 3月日更

一个有情怀的PPT模板下载网站

happlyfox

学习 3月日更 工具分享

领跑行业!浪潮云斩获“2021云管和云网大会”多项殊荣

浪潮云

云计算 云原生

LiteOS内核源码分析:位操作模块

华为云开发者社区

LiteOS 源代码 位操作 bit Huawei LiteOS

LeetCode题解:126. 单词接龙 II,BFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

C语言性能优化:减少相关性依赖,利用指令并行提升性能

1

编程 性能优化 C语言 cpu 100%

时间复杂度总结

我是程序员小贱

3月日更

Wireshark数据包分析学习笔记Day19

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

纸币会消失吗:数字货币如何走进我们生活

CECBC区块链专委会

货币

开源的 Switch 模拟器——GitHub 热点速览 v.21.12

HelloGitHub

GitHub 开源

深入理解ES8的新特性SharedArrayBuffer

程序那些事

JavaScript ecmascript 程序那些事 es8

图像视频压缩:深度学习,有一套

华为云开发者社区

深度学习 自编码器 图像压缩 循环神经网络 视频压缩

2021春招Java后端开发面试总结:25个技术专题(最全面试攻略)

比伯

Java 编程 架构 面试 程序人生

开启Python学习之旅,分享学习路上的神器集合!

王小王-123

Python 学习 资源分享 工具分享

区块链圈频现百万元年薪招聘 现金+股票仍难觅良才

CECBC区块链专委会

区块链人才

NA公链(Nirvana)NAC公链独步公链江湖

区块链第一资讯

区块链

适配器模式在Mybatis中的妙用

Java小咖秀

Java 源码 设计模式 mybatis 开发

金三银四,GitHub 热门面试在这里

GitHub指北

滴滴基于 ElasticSearch 的一站式搜索中台实践-InfoQ