Elasticsearch(ES)作為開(kāi)源首選的分布式搜索分析引擎,通過(guò)一套系統(tǒng)輕松滿(mǎn)足用戶(hù)的日志實(shí)時(shí)分析、全文檢索、結(jié)構(gòu)化數(shù)據(jù)分析等多種需求,大幅降低大數(shù)據(jù)時(shí)代挖掘數(shù)據(jù)價(jià)值的成本。騰訊在公司內(nèi)部豐富的場(chǎng)景中大規(guī)模使用 ES,同時(shí)聯(lián)合 Elastic 公司在騰訊云上提供內(nèi)核增強(qiáng)版的 ES 云服務(wù),大規(guī)模、豐富多樣的的使用場(chǎng)景推動(dòng)著騰訊對(duì)原生 ES 進(jìn)行持續(xù)的高可用、高性能、低成本優(yōu)化。
一、ES 在騰訊的應(yīng)用場(chǎng)景
【ES 在騰訊的應(yīng)用場(chǎng)景】
最初我們使用 ES 于日志實(shí)時(shí)分析場(chǎng)景,典型日志如下:
運(yùn)營(yíng)日志,比如慢日志、異常日志,用來(lái)定位業(yè)務(wù)問(wèn)題;
業(yè)務(wù)日志,比如用戶(hù)的點(diǎn)擊、訪問(wèn)日志,可以用來(lái)分析用戶(hù)行為;
審計(jì)日志,可以用于安全分析。ES 很完美的解決了日志實(shí)時(shí)分析的需求,它具有如下特點(diǎn):
Elastic 生態(tài)提供了完整的日志解決方案,任何一個(gè)開(kāi)發(fā)、運(yùn)維同學(xué)使用成熟組件,通過(guò)簡(jiǎn)單部署,即可搭建起一個(gè)完整的日志實(shí)時(shí)分析服務(wù)。
在 Elastic 生態(tài)中,日志從產(chǎn)生到可訪問(wèn)一般在 10s 級(jí)。相比于傳統(tǒng)大數(shù)據(jù)解決方案的幾十分鐘、小時(shí)級(jí),時(shí)效性非常高。
由于支持倒排索引、列存儲(chǔ)等數(shù)據(jù)結(jié)構(gòu),ES 提供非常靈活的搜索分析能力。
支持交互式分析,即使在萬(wàn)億級(jí)日志的情況下,ES 搜索響應(yīng)時(shí)間也是秒級(jí)。
日志是互聯(lián)網(wǎng)行業(yè)最基礎(chǔ)、最廣泛的數(shù)據(jù)形式,ES 非常完美的解決了日志實(shí)時(shí)分析場(chǎng)景,這也是近幾年 ES 快速發(fā)展的一個(gè)重要原因。
第二類(lèi)使用場(chǎng)景是搜索服務(wù),典型場(chǎng)景包含:商品搜索,類(lèi)似京東、淘寶、拼多多中的商品搜索;APP 搜索,支持應(yīng)用商店里的應(yīng)用搜索;站內(nèi)搜索,支持論壇、在線文檔等搜索功能。我們支持了大量搜索服務(wù),它們主要有以下特點(diǎn):
高性能:?jiǎn)蝹€(gè)服務(wù)最大達(dá)到 10w+ QPS,平響 20ms~,P95 延時(shí)小于 100ms。
強(qiáng)相關(guān):搜索體驗(yàn)主要取決于搜索結(jié)果是否高度匹配用戶(hù)意圖,需要通過(guò)正確率、召回率等指標(biāo)進(jìn)行評(píng)估。
高可用:搜索場(chǎng)景通常要求 4 個(gè) 9 的可用性,支持單機(jī)房故障容災(zāi)。任何一個(gè)電商服務(wù),如淘寶、京東、拼多多,只要故障一個(gè)小時(shí)就可以上頭條。
第三類(lèi)使用場(chǎng)景是時(shí)序數(shù)據(jù)分析,典型的時(shí)序數(shù)據(jù)包含:Metrics,即傳統(tǒng)的服務(wù)器監(jiān)控;APM,應(yīng)用性能監(jiān)控;物聯(lián)網(wǎng)數(shù)據(jù),智能硬件、工業(yè)物聯(lián)網(wǎng)等產(chǎn)生的傳感器數(shù)據(jù)。這類(lèi)場(chǎng)景騰訊很早就開(kāi)始探索,在這方面積累了非常豐富的經(jīng)驗(yàn)。這類(lèi)場(chǎng)景具有以下特點(diǎn):
高并發(fā)寫(xiě)入:線上單集群最大規(guī)模達(dá)到 600+節(jié)點(diǎn)、1000w/s 的寫(xiě)入吞吐。
高查詢(xún)性能:要求單條曲線 或者單個(gè)時(shí)間線的查詢(xún)延時(shí)在 10ms~。
多維分析:要求靈活、多維度的統(tǒng)計(jì)分析能力,比如我們?cè)诓榭幢O(jiān)控的時(shí)候,可以按照地域、業(yè)務(wù)模塊等靈活的進(jìn)行統(tǒng)計(jì)分析。
二、遇到的挑戰(zhàn)
前面我們介紹了 ES 在騰訊內(nèi)部的廣泛應(yīng)用,在如此大規(guī)模、高壓力、豐富使用場(chǎng)景的背景下,我們遇到了很多挑戰(zhàn),總體可以劃分為兩類(lèi):搜索類(lèi)和時(shí)序類(lèi)。
首先,我們一起看看搜索類(lèi)業(yè)務(wù)的挑戰(zhàn)。以電商搜索、APP 搜索、站內(nèi)搜索為代表,這類(lèi)業(yè)務(wù)非常重視可用性,服務(wù) SLA 達(dá)到 4 個(gè) 9 以上,需要容忍單機(jī)故障、單機(jī)房網(wǎng)絡(luò)故障等;同時(shí)要求高性能、低毛刺,例如 20w QPS、平響 20ms、P95 延時(shí) 100ms。總之,在搜索類(lèi)業(yè)務(wù)場(chǎng)景下,核心挑戰(zhàn)點(diǎn)在于高可用、高性能。
另一類(lèi)我們稱(chēng)之為時(shí)序類(lèi)業(yè)務(wù)挑戰(zhàn),免備案服務(wù)器,包含日志、Metrics、APM 等場(chǎng)景。相比于搜索類(lèi)業(yè)務(wù)重點(diǎn)關(guān)注高可用、高性能,時(shí)序類(lèi)業(yè)務(wù)會(huì)更注重成本、性能。比如時(shí)序場(chǎng)景用戶(hù)通常要求高寫(xiě)入吞吐,部分場(chǎng)景可達(dá) 1000w/s
WPS;在這樣寫(xiě)入吞吐下,保留 30 天的數(shù)據(jù),通常可達(dá)到 PB 級(jí)的存儲(chǔ)量。而現(xiàn)實(shí)是日志、監(jiān)控等場(chǎng)景的收益相對(duì)較低,很可能用戶(hù)用于線上實(shí)際業(yè)務(wù)的機(jī)器數(shù)量才是 100 臺(tái),而監(jiān)控、日志等需要 50 臺(tái),這對(duì)多數(shù)用戶(hù)來(lái)說(shuō),基本是不可接受的。所以在時(shí)序類(lèi)業(yè)務(wù)中,主要的挑戰(zhàn)在于存儲(chǔ)成本、計(jì)算成本等方面。
前面我們介紹了在搜索類(lèi)、時(shí)序類(lèi)業(yè)務(wù)場(chǎng)景下遇到的高可用、低成本、高性能等挑戰(zhàn),下面針對(duì)這些挑戰(zhàn),我們重點(diǎn)分享騰訊在 ES 內(nèi)核方面的深入實(shí)踐。
三、ES 優(yōu)化實(shí)踐
首先,我們來(lái)看看高可用優(yōu)化,我們把高可用劃分為三個(gè)維度: