滴滴基於 ElasticSearch 的一站式搜索中臺實踐(轉)

ElasticSearch 在滴滴的應用場景

滴滴自 2016 年 4 月開始組建團隊,解決 ElasticSearch 在使用過程中遇到的性能問題。搜索平臺的建設是隨着業務體量的發展逐步演進的,如今已經發展到有超過 3500+ ElasticSearch 實例, 5PB 的數據存儲,峯值寫入 TPS 超過了 2000W/S 的超大規模,每天近 10 億次檢索查詢。

ElasticSearch 在滴滴有着非常豐富的應用場景:

  • 爲線上核心搜索業務提供引擎支持;
  • 作爲 RDS 從庫,海量數據檢索需求;
  • 解決公司海量日誌檢索問題;
  • 安全場景提供數據分析能力。

不同場景業務方對寫入的及時性、查詢的 RT、整體穩定性的要求都是不一樣的,我們對平臺提供的服務抽象爲索引模板服務,用戶可以自助開通相應的服務。

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

我們內部經過壓測、線上調優以及引擎的一些優化,已經將最佳實踐,沉澱到標準的 Docker 鏡像中,個性化的需求都在索引模板的服務級別進行設置與管控,部分優化如下:

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

平臺穩定性面臨的風險與挑戰

超大的集羣規模和豐富的場景給滴滴 ElasticSearch 平臺帶來了極大的風險與挑戰。主有以下幾個方面:

  • 線上業務場景

    • 穩定性要求至少 99.99%,對查詢的 90 分位性能抖動敏感;
    • 架構層面需要支持多活的需求,對數據的一致性與及時性都有要求,必須保證數據的最終一致性,數據更新秒級可見;
    • 不同線上業務,插件需求、索引分片規則都是多樣化的;
    • 衆多獨立集羣如何快速平滑地進行滾動升級,保障的線上業務無影響。
  • 準線上業務場景

    • 離線快速導入時效性要求分鐘級,實時導入 10 億條數據需要 5 個小時,導入時在線資源消耗嚴重,線上服務基本不可用,導入成本消耗過大;
    • 查詢的多樣性,14W+ 查詢模板,單索引最高有 100+ 應用同時查詢,在多租戶場景下,如何保證查詢的穩定性。
  • 安全與日誌場景

    • 千萬級別數據每秒的實時寫入,PB 級日誌數據的存儲,對大規模 ElasticSearch 的集羣提出訴求,但 ElasticSearch 有自己的元信息瓶頸,詳見團隊同學的分享: https://www.infoq.cn/article/SbfS6uOcF_gW6FEpQlLK 
    • 查詢場景不固定,單個索引幾百億級別的數據體量,需要保障不合理查詢對集羣與索引的穩定性風險可控;
    • PB 級存儲,查詢頻率低,但查詢的時效性要求 S 級別返回,全部基於 SSD 盤,成本太高,需要在查詢體驗沒有太大變化的情況下,降低整體的存儲成本。

那麼,如何解決這些問題呢?歡迎到 QCon 全球軟件開發大會(廣州站)現場與我面對面交流。

如何打造“存儲成本低”的搜索中臺

目前,在日誌與安全分析場景下,存儲成本壓力很大,屬於典型的“寫多查少”的場景,我們對存儲成本的耗散點進行了深入的分析,整體情況如下:

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

針對資源耗散點,我們在架構層面進行了優化,整體成本降低了 30%,累積節省了 2PB 的存儲,分別從以下幾個方面進行了優化

  • 存儲索引分離:日誌原文與索引進行分開存儲

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

  • 不合理的索引字段 Mapping 自動優化

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

  • 冷熱數據進行了分級存儲

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

  • ES On Docker&Ceph 改造

滴滴基於 ElasticSearch 的一站式搜索中臺實踐

未來發展規劃

基於 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 的存儲計算分離。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章