Elasticsearch是_一個分佈式、RESTful風格的搜索和數據分析引擎。_在開源搜索領域已經遙遙領先其餘產品。隨着近年來ES的快速發展,ES已經逐步從單一搜索引擎進化成一個全能型的數據產品。在日誌監控,全文檢索,數據庫加速,大數據分析等不少領域獲得普遍應用。數據庫
▲數據庫引擎排名,數據來源:https://db-engines.com/en/ranking▲緩存
京東智聯雲ES支撐了公有云,私有云和京東集團內部的大量ES集羣。京東商城,京東物流,京東金融等各個業務領域都對ES服務有很大量的需求。目前已使用數十萬核,上萬個節點,數十萬億個文檔。性能優化
如何利用雲廠商的優點,高效,可靠,穩定的運維如此大規模的ES集羣是咱們須要思考和解決的問題。下面我將從幾個維度介紹咱們的思考和實踐。併發
雲廠商相較於用戶自建最大的優點在於彈性。彈性給用戶帶來的不只僅是方便易用,還有下降成本。京東智聯雲ES依託於雲艦的服務編排能力,可以達到快速,靈活的部署集羣,支持對集羣水平擴縮,垂直變配,存儲擴容等彈性能力。另外京東智聯雲ES還提供了 雲硬盤 、 本地盤 、 對象存儲 多種存儲方式,知足不一樣場景下的用戶需求。app
另外服務編排還提供了 故障自愈能力 。物理機故障場景,會自動將故障機器上的es節點failover到其餘節點;es節點故障場景,會自動嘗試重啓es節點若是仍然沒法恢復則會遷移es節點到其餘物理機節點。運維
▲京東智聯雲ES運維能力▲分佈式
如此大規模的集羣,須要全局和指標豐富的運維監控系統,來保障系統運維的可視化。經過咱們的運維經驗積累,京東智聯雲的運維監控系統,已經可以實時的發現異常集羣,並可以經過各個監控指標分析發現問題的緣由。ide
ES版本特別多,因爲歷史緣由不少舊系統很難升級,且不一樣用戶上雲對版本需求差別較大,因此須要支持不少不一樣的版本。目前支持的大版本有2.x,5.x,6.x,7.x。多版本的管理複用同一套編排管理系統,可以快速支持新es版本上線。性能
ES的特色是開箱即用,但ES可配置項很是多,對於不一樣的業務場景和需求,集羣須要不一樣的調優配置,非專業用戶每每很難使用的很是合理。下面列舉一些常見問題:測試
索引生命週期管理是用戶很經常使用的一個管理功能。按天或月週期建立索引,保留必定時間後刪除過時索引,永久保留指定時間的索引(例如大促期間的索引)。ES從6.6版本在x-pack中開始支持索引生命週期管理功能的測試版本,但低版本不支持該功能。京東智聯雲ES將該功能拓展到全部ES版本並提供UI化設置,比經過原生kibana配置或者API配置更加簡單實用。
探索智能化運維,咱們的運維知識和經驗產品化提供給用戶,根據用戶的業務場景,綜合各項監控指標,給出集羣的健康情況和解決建議。例如節點負載不均,分片設置不合理,堆內存佔用過高,GC時間太長,filedata佔比過高,集羣負載較高,分片數量太大,寫入或者查詢線程池隊列有堆積或者reject,集羣的讀寫流量異常波動等。
自動化運維或者自治運維是終極目標,隨着智能化運維能力的提升,經過監控指標數據自治系統就可以自主得出決策並執行,徹底不須要人工介入。
ES的應用場景主要涉及日誌檢索,數據庫加速,監控指標,數據分析等領域。不一樣的業務場景具備不一樣的特色,對性能的需求也不盡相同,因此須要針對不一樣場景有不一樣的優化方案。
1. 日誌檢索場景, 併發寫入量大,實時性要求不高,存儲量大,數據有冷熱屬性。針對這種場景能夠提升索引寫入緩存大小來提高寫入性能;增長refresh interval時間間隔來減小segment數量;將translog.durability使用HDD來下降存儲成本。
2. 數據庫加速場景, 對於沒有事務性要求,且須要檢索海量數據的結構化查詢場景,ES是替代關係型數據庫的不錯選擇。京東主要應用的業務有商品,優惠券,訂單,對帳,物流等。此場景的特色是延遲敏感,須要高性能,高可用。
3. 監控指標, 併發寫入量大,時序特性,不須要高可用,數據有冷熱屬性。
4. 數據分析場景, 數據分析維度較多,聚合查詢。寫入量大,查詢量小,但須要聚合查詢。京東主要應用的業務有訂單交易分析,用戶畫像等。
專業的人作專業的事,託管ES產品 第一步解決了用戶本身搭建集羣, 管理集羣的效率和成本問題,但用戶仍然須要瞭解ES的原理知識,調優知識,索引配置,集羣配置,分片設置等等和業務無直接關係的知識,使用好ES仍然須要很高的門檻。因此託管ES產品的 第二步就是服務化, 用戶只須要提出業務的需求,不用再關心服務後面ES集羣的參數。例如用戶從自身的業務場景入手,提供寫入查詢性能指標的指望,另外用戶只須要定義索引的mapping,不須要關心索引的settings,分片數量等配置信息。從集羣的規格配置到索引的合理設置都由後臺自動設置和優化。
給用戶提供簡單可靠的產品是咱們的終極目標。因此將來咱們會從兩個方面提高優化咱們的產品,一是從用戶的角度對外呈現產品形態,經過產品服務化更貼近用戶的使用習慣,下降用戶使用門檻,提供更加簡單且實用的使用方式。二是從運維的角度加強後臺的自治運維能力,包括智能檢測和修復能力,故障自愈能力,自動彈性能力,數據配置託管能力等,作到從託管產品變成託管服務。