作者:jeremyshi,騰訊 TEG 后臺(tái)開發(fā)工程師
1. 背景
隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)蓬勃發(fā)展,數(shù)據(jù)量呈爆炸式增長(zhǎng)。如今我們可以輕易得從海量數(shù)據(jù)里找到想要的信息,其中離不開搜索引擎技術(shù)的幫助。特別是其中的索引、檢索和排序機(jī)制,我們無(wú)需深入了解背后復(fù)雜的信息檢索原理,即可實(shí)現(xiàn)基本的全文檢索功能。數(shù)據(jù)量達(dá)到十億,百億規(guī)模仍然可以秒級(jí)返回檢索結(jié)果。對(duì)于系統(tǒng)容災(zāi)、數(shù)據(jù)安全性、可擴(kuò)展性、可維護(hù)性等我們關(guān)注的實(shí)際問題,在開源搜索引擎領(lǐng)域排名第一的 Elasticsearch 里均能得到有效解決。
2. Elasticsearch 介紹
Elasticsearch(ES)是一個(gè)基于 Lucene 構(gòu)建的開源分布式搜索分析引擎,可以近實(shí)時(shí)的索引、檢索數(shù)據(jù)。具備高可靠、易使用、社區(qū)活躍等特點(diǎn),在全文檢索、日志分析、監(jiān)控分析等場(chǎng)景具有廣泛應(yīng)用。由于高可擴(kuò)展性,集群可擴(kuò)展至百節(jié)點(diǎn)規(guī)模,處理 PB 級(jí)數(shù)據(jù)。通過簡(jiǎn)單的 RESTful API 即可實(shí)現(xiàn)寫入、查詢、集群管理等操作。除了檢索,還提供豐富的統(tǒng)計(jì)分析功能。以及官方功能擴(kuò)展包 XPack 滿足其他需求,如數(shù)據(jù)加密、告警、機(jī)器學(xué)習(xí)等。另外,可通過自定義插件,如 COS 備份、QQ 分詞等滿足特定功能需求。下面主要介紹 ES 的架構(gòu)以及基本原理。
2.1 Elasticsearch 架構(gòu)與原理
Elasticsearch集群
基本概念 :
- Cluster「集群」:由部署在多個(gè)機(jī)器的 ES 節(jié)點(diǎn)組成,以處理較大數(shù)據(jù)集和實(shí)現(xiàn)高可用。
- Node「節(jié)點(diǎn)」:機(jī)器上的 ES 進(jìn)程,可配置不同類型的節(jié)點(diǎn)。
- Master Node「主節(jié)點(diǎn)」:用于集群選主。由其中一個(gè)節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn),負(fù)責(zé)集群元數(shù)據(jù)管理,如索引創(chuàng)建,節(jié)點(diǎn)離開加入集群等。
- Data Node「數(shù)據(jù)節(jié)點(diǎn)」:負(fù)責(zé)索引數(shù)據(jù)存儲(chǔ)。
- Index「索引」:索引數(shù)據(jù)的邏輯集合,可類比關(guān)系型數(shù)據(jù)的 DataBase。
- Shard「分片」:索引數(shù)據(jù)子集,通過將分片分配至集群不同節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)橫向擴(kuò)展。以解決單個(gè)節(jié)點(diǎn) CPU、內(nèi)存、磁盤處理能力不足的情況。
- Primary Shard「主分片」:數(shù)據(jù)分片采用主從模式,由分片接收索引操作。
- Replica Shard「副本分片」:主分片的拷貝,以提高查詢吞吐量和實(shí)現(xiàn)數(shù)據(jù)高可靠。主分片異常時(shí),其中一個(gè)副本分片會(huì)自動(dòng)提升為新的主分片。為了便于大家理解 ES 里的數(shù)據(jù)模型,將它與關(guān)系型數(shù)據(jù)庫(kù) MySQL 做類比:
數(shù)據(jù)模型類別
從上面架構(gòu)圖可以看出,ES 架構(gòu)非常簡(jiǎn)潔。內(nèi)置自動(dòng)發(fā)現(xiàn)實(shí)現(xiàn) Zen discovery,當(dāng)一個(gè)節(jié)點(diǎn)啟動(dòng)后,通過聯(lián)系集群成員列表即可加入集群。由其中一個(gè)節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn),用于集群元數(shù)據(jù)管理,維護(hù)分片在節(jié)點(diǎn)間的分配關(guān)系。當(dāng)新節(jié)點(diǎn)加入集群后,Master 節(jié)點(diǎn)會(huì)自動(dòng)遷移部分分片至新節(jié)點(diǎn),均衡集群負(fù)載。
節(jié)點(diǎn)加入集群
分布式集群難免有節(jié)點(diǎn)故障。主節(jié)點(diǎn)會(huì)定期探測(cè)集群其他節(jié)點(diǎn)存活狀態(tài),當(dāng)節(jié)點(diǎn)故障后,會(huì)將節(jié)點(diǎn)移出集群。并自動(dòng)在其他節(jié)點(diǎn)上恢復(fù)故障節(jié)點(diǎn)上的分片。主分片故障時(shí)會(huì)提升其中一個(gè)副本分片為主分片。其他節(jié)點(diǎn)也會(huì)探活主節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)故障后,會(huì)觸發(fā)內(nèi)置的類 Raft 協(xié)議選主,并通過設(shè)置最少候選主節(jié)點(diǎn)數(shù),避免集群爆裂。
節(jié)點(diǎn)離開集群
除了集群管理,索引數(shù)據(jù)讀寫也是我們關(guān)心的重要部分。ES 采用 peer-to-peer 架構(gòu),每個(gè)節(jié)點(diǎn)保存全量分片路由信息,也就是每個(gè)節(jié)點(diǎn)均可以接收用戶讀寫。如發(fā)送寫入請(qǐng)求至節(jié)點(diǎn) 1,寫入請(qǐng)求默認(rèn)通過文檔 ID 的 Hash 值確定寫入到哪個(gè)主分片,這里假設(shè)寫入到分片 0。寫完主分片 P0,并行轉(zhuǎn)發(fā)寫入請(qǐng)求至副本分片 R0 所在節(jié)點(diǎn),當(dāng)副本分片所在節(jié)點(diǎn)確認(rèn)寫入成功后返回客戶端報(bào)告寫入成功,保障數(shù)據(jù)安全性。并且寫入前,會(huì)確保 quorum 數(shù)量的副本數(shù),避免網(wǎng)絡(luò)分區(qū)導(dǎo)致寫入數(shù)據(jù)不一致。
寫入操作
查詢采用分布式搜索,如請(qǐng)求發(fā)給節(jié)點(diǎn) 3 后,請(qǐng)求會(huì)轉(zhuǎn)發(fā)至索引的主分片或副本分片所在節(jié)點(diǎn)。當(dāng)然如果寫入、查詢均帶有路由字段信息。請(qǐng)求只會(huì)發(fā)送給部分分片,避免全量分片掃描。這些節(jié)點(diǎn)完成查詢后將結(jié)果返回給請(qǐng)求節(jié)點(diǎn),由請(qǐng)求節(jié)點(diǎn)匯聚各個(gè)節(jié)點(diǎn)的結(jié)果返回給客戶端。
查詢操作
2.2 Lucene 原理
介紹完 ES 集群基本原理,下面簡(jiǎn)單介紹下 ES 的底層存儲(chǔ)引擎 Lucene。首先 Lucene 是一款高性能的信息檢索庫(kù),提供索引和檢索基本功能。ES 在此基礎(chǔ)上解決可靠性、分布式集群管理等問題最終形成產(chǎn)品化的全文檢索系統(tǒng)。
Lucene 解決的核心問題便是全文檢索。與傳統(tǒng)的檢索方式不同,全文檢索避免在查詢時(shí)進(jìn)行全部?jī)?nèi)容掃描。比如數(shù)據(jù)寫入后,首先會(huì)對(duì)寫入的文檔字段內(nèi)容分詞,形成詞典表和與它關(guān)聯(lián)的倒排表。查詢時(shí)由關(guān)鍵詞分詞結(jié)果直接匹配詞典表內(nèi)容,并獲取關(guān)聯(lián)的文檔列表,快速獲取結(jié)果集。并通過排序規(guī)則,優(yōu)先展示匹配度高的文檔。
倒排索引
Lucene 為了加快索引速度,采用了 LSM Tree 結(jié)構(gòu),先把索引數(shù)據(jù)緩存在內(nèi)存。當(dāng)內(nèi)存空間占用較高或到達(dá)一定時(shí)間后,內(nèi)存中的數(shù)據(jù)會(huì)寫入磁盤形成一個(gè)數(shù)據(jù)段文件(segment)。段文件內(nèi)包含詞典、倒排表、字段數(shù)據(jù)等等多個(gè)文件。
LSM Tree結(jié)構(gòu)
為了兼容寫入性能和數(shù)據(jù)安全性,如避免內(nèi)存緩沖區(qū)里的數(shù)據(jù)因?yàn)闄C(jī)器故障丟失。ES 在寫內(nèi)存的同時(shí)也會(huì)寫事物日志 Translog。內(nèi)存里的數(shù)據(jù)會(huì)定期生成新的段文件,寫入開銷更低的文件系統(tǒng)緩存即可打開和讀取實(shí)現(xiàn)近實(shí)時(shí)搜索。
寫入緩沖與持久化
3. Elasticsearch 應(yīng)用場(chǎng)景
ES 的典型使用場(chǎng)景有日志分析、時(shí)序分析、全文檢索等。
3.1 日志實(shí)時(shí)分析場(chǎng)景
日志是互聯(lián)網(wǎng)行業(yè)基礎(chǔ)廣泛的數(shù)據(jù)形式。典型日志有用來定位業(yè)務(wù)問題的運(yùn)營(yíng)日志,如慢日志、異常日志;用來分析用戶行為的業(yè)務(wù)日志,如用戶的點(diǎn)擊、訪問日志;以及安全行為分析的審計(jì)日志等。
Elastic 生態(tài)提供了完整的日志解決方案。通過簡(jiǎn)單部署,即可搭建一個(gè)完整的日志實(shí)時(shí)分析服務(wù)。ES 生態(tài)完美的解決了日志實(shí)時(shí)分析場(chǎng)景需求,這也是近幾年 ES 快速發(fā)展的一個(gè)重要原因。日志從產(chǎn)生到可訪問一般在 10s 級(jí),相比于傳統(tǒng)大數(shù)據(jù)解決方案的幾十分鐘、小時(shí)級(jí)時(shí)效性非常高。ES 底層支持倒排索引、列存儲(chǔ)等數(shù)據(jù)結(jié)構(gòu),使得在日志場(chǎng)景可以利用 ES 非常靈活的搜索分析能力。通過 ES 交互式分析能力,即使在萬(wàn)億級(jí)日志的情況下,日志搜索響應(yīng)時(shí)間也是秒級(jí)。日志處理的基本流程包含:日志采集 -> 數(shù)據(jù)清洗 -> 存儲(chǔ) -> 可視化分析。Elastic Stack 通過完整的日志解決方案,幫助用戶完成對(duì)日志處理全鏈路管理。
日志分析鏈路
其中:
- 日志采集:通過輕量級(jí)日志采集組件 FileBeat 實(shí)時(shí)讀取業(yè)務(wù)日志文件,發(fā)送數(shù)據(jù)至下游組件如 Logstash。
- 文本解析:利用正則解析等機(jī)制,將日志文本數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)。可使用獨(dú)立的 Logstash 服務(wù)或 Elasticsearch 內(nèi)置的輕量級(jí)數(shù)據(jù)處理模塊 Ingest Pipeline,完成數(shù)據(jù)清洗和轉(zhuǎn)換。
- 數(shù)據(jù)存儲(chǔ):通過 Elasticsearch 搜索分析平臺(tái)進(jìn)行數(shù)據(jù)持久存儲(chǔ),提供全文搜索和分析能力。
- 可視化分析:通過功能豐富的圖形界面,即可對(duì)日志數(shù)據(jù)進(jìn)行搜索分析,如可視化組件 Kibana。
可視化組件Kibana
3.2 時(shí)序分析場(chǎng)景 時(shí)序數(shù)據(jù)是按時(shí)間順序記錄設(shè)備、系統(tǒng)狀態(tài)變化的數(shù)據(jù)。典型的時(shí)序數(shù)據(jù)有傳統(tǒng)的服務(wù)器監(jiān)控指標(biāo)數(shù)據(jù)、應(yīng)用系統(tǒng)性能監(jiān)控?cái)?shù)據(jù)、智能硬件、工業(yè)物聯(lián)網(wǎng)傳感器數(shù)據(jù)等。早在 2017 年我們也基于 ES 進(jìn)行了時(shí)序分析場(chǎng)景的探索。時(shí)序分析場(chǎng)景具有高并發(fā)寫入、低查詢時(shí)延、多維分析的特點(diǎn)。由于 ES 具有集群擴(kuò)展、批量寫入、讀寫帶路由、數(shù)據(jù)分片等能力,目前已實(shí)現(xiàn)線上單集群最大規(guī)模達(dá)到 600+節(jié)點(diǎn)、1000w/s 的寫入吞吐、單條曲線或單個(gè)時(shí)間線的查詢延時(shí)可控制在 10ms。另外 ES 提供靈活、多維度的統(tǒng)計(jì)分析能力,實(shí)現(xiàn)查看監(jiān)控按照地域、業(yè)務(wù)模塊等靈活的進(jìn)行統(tǒng)計(jì)分析。另外,ES 支持列存儲(chǔ)、高壓縮比、副本數(shù)按需調(diào)整等能力,可實(shí)現(xiàn)較低存儲(chǔ)成本。最后時(shí)序數(shù)據(jù)也可通過 Kibana 組件輕松實(shí)現(xiàn)可視化。
時(shí)序數(shù)據(jù)可視化面板
3.3 搜索服務(wù)場(chǎng)景 搜索服務(wù)典型場(chǎng)景有像京東、拼多多、蘑菇街中的商品搜索;應(yīng)用商店中的應(yīng)用 App 搜索;論壇、在線文檔等站內(nèi)搜索。這類場(chǎng)景用戶關(guān)注高性能、低延遲、高可靠、搜索質(zhì)量等。如單個(gè)服務(wù)最大需達(dá)到 10w+ QPS,請(qǐng)求平均響應(yīng)時(shí)間在 20ms 以內(nèi),查詢毛刺低于 100ms,高可用如搜索場(chǎng)景通常要求 4 個(gè) 9 的可用性,支持單機(jī)房故障容災(zāi)等。目前云上 Elasticsearch 服務(wù)已支持多可用區(qū)容災(zāi),故障分鐘級(jí)恢復(fù)能力。通過 ES 高效倒排索引,以及自定義打分、排序能力與豐富的分詞插件,實(shí)現(xiàn)全文檢索需求。在開源全文檢索領(lǐng)域,ES 在 DB-Engines 搜索引擎類別持續(xù)多年排名第一。
DB-Engines搜索引擎排名
4.騰訊 Elasticserch 服務(wù)
公司內(nèi)外部均有大量的日志實(shí)時(shí)分析、時(shí)序數(shù)據(jù)分析、全文檢索需求場(chǎng)景。目前我們已聯(lián)合 Elastic 公司在騰訊云上提供了內(nèi)核增強(qiáng)版 ES 云服務(wù)簡(jiǎn)稱 CES,其中內(nèi)核增強(qiáng)包括 Xpack 商業(yè)套件和內(nèi)核優(yōu)化。在服務(wù)公司內(nèi)部以及公有云客戶過程中,也遇到了較多問題和挑戰(zhàn),比如超大規(guī)模集群,千萬(wàn)級(jí)數(shù)據(jù)寫入,以及云上用戶豐富的使用場(chǎng)景等。下面主要介紹我們?cè)趦?nèi)核層面,從可用性,性能,成本等方面進(jìn)行的優(yōu)化措施。
4.1 可用性優(yōu)化
可用性 問題表現(xiàn)在三個(gè)方面,第一,ES 內(nèi)核 系統(tǒng)健壯性不足 ,這也是分布式系統(tǒng)共性難題。例如異常查詢、壓力過載集群容易出現(xiàn)雪崩。集群可擴(kuò)展性不足,比如集群分片數(shù)超 10w 會(huì)出現(xiàn)明顯的元數(shù)據(jù)管理瓶頸。以及集群擴(kuò)容、節(jié)點(diǎn)異常后加回集群,存在節(jié)點(diǎn)、多硬盤之間數(shù)據(jù)不均問題。第二, 容災(zāi)方面 需保障機(jī)房網(wǎng)絡(luò)故障時(shí)可快速恢復(fù)服務(wù),自然災(zāi)害下防止數(shù)據(jù)丟失,誤操作后快速恢復(fù)數(shù)據(jù)等可靠性、數(shù)據(jù)安全性問題。另外也包括在運(yùn)營(yíng)過程中也發(fā)現(xiàn)的一些 ES 系統(tǒng)缺陷 ,比如說 Master 節(jié)點(diǎn)堵塞、分布式死鎖、滾動(dòng)重啟緩慢等。
針對(duì)上面的問題,在 系統(tǒng)健壯性 方面,我們通過服務(wù)限流,容忍機(jī)器網(wǎng)絡(luò)故障、異常查詢等導(dǎo)致的服務(wù)不穩(wěn)定問題。通過優(yōu)化集群元數(shù)據(jù)管理邏輯,提升集群擴(kuò)展能力一個(gè)數(shù)量級(jí),支持千億節(jié)點(diǎn)集群、百萬(wàn)級(jí)分片數(shù)。集群均衡方面,通過優(yōu)化節(jié)點(diǎn)、多硬盤間的分片均衡,保證大規(guī)模集群的壓力均衡。
容災(zāi)方案 方面,我們通過擴(kuò)展 ES 的插件機(jī)制實(shí)現(xiàn)數(shù)據(jù)備份和回檔,可把 ES 的數(shù)據(jù)備份到 COS,保障數(shù)據(jù)安全性;通過管控系統(tǒng)建設(shè)支持跨可用區(qū)容災(zāi),用戶可以按需部署多個(gè)可用區(qū),以容忍單機(jī)房故障。采用垃圾桶機(jī)制,保證用戶在欠費(fèi)、誤操作等場(chǎng)景下,集群數(shù)據(jù)可快速恢復(fù)。系統(tǒng)缺陷方面,我們修復(fù)了滾動(dòng)重啟、Master 阻塞、分布式死鎖等一系列 Bug。其中滾動(dòng)重啟優(yōu)化,可加速節(jié)點(diǎn)重啟速度 5+倍。Master 堵塞問題,我們?cè)?ES 6.x 版本和官方一起做了優(yōu)化。
4.2 性能優(yōu)化
性能 問題,比如以日志、監(jiān)控為代表的時(shí)序場(chǎng)景,對(duì)寫入性能要求非常高,寫入并發(fā)可達(dá) 1000w/s。然而我們發(fā)現(xiàn)在帶主鍵寫入時(shí),ES 性能會(huì)衰減 1+倍。壓測(cè)場(chǎng)景下發(fā)現(xiàn) CPU 存在無(wú)法充分利用的情況。通常搜索服務(wù)對(duì)查詢性要求非常高,一般要求 20w QPS, 平均響應(yīng)時(shí)間小于 20ms,并且需盡量避免 GC、以及執(zhí)行計(jì)劃不優(yōu)等造成的查詢毛刺問題。
為了解決這些問題。寫入方面,針對(duì)主鍵去重場(chǎng)景,我們通過利用段文件上記錄的最大最小值進(jìn)行查詢裁剪,加速主鍵去重的過程,寫入性能提升 45%,具體可參考Lucene-8980。對(duì)于壓測(cè)場(chǎng)景下 CPU 不能充分利用的問題,通過優(yōu)化 ES 刷新 Translog 時(shí)鎖粒度,避免資源搶占,提升性能提升 20%,具體可參考ES-45765 /47790。我們也正在嘗試通過向量化執(zhí)行優(yōu)化寫入性能,通過減少分支跳轉(zhuǎn)、指令 Miss,預(yù)期寫入性能可提升 1 倍。
查詢方面,我們通過優(yōu)化段文件合并策略,對(duì)于非活躍段文件會(huì)自動(dòng)觸發(fā)合并,收斂段文件數(shù)以降低資源開銷,提升查詢性能。根據(jù)每個(gè)段文件上記錄的最大最小值進(jìn)行查詢剪枝,提升查詢性能 40%。通過 CBO 策略,避免緩存較大開銷的 Cache 操作導(dǎo)致產(chǎn)生 10+倍的查詢毛刺,具體可參考Lucene-9002。另外還包括優(yōu)化 Composite 聚合中的性能問題,實(shí)現(xiàn)真正的翻頁(yè)操作,以及優(yōu)化帶排序場(chǎng)景的聚合使得性能提升 3-7 倍。此外,我們也在嘗試通過一些新硬件來優(yōu)化性能,比如說英特爾的 AEP、Optane、QAT 等。
4.3 成本優(yōu)化
成本 方面主要體現(xiàn)在以日志、監(jiān)控為代表的時(shí)序場(chǎng)景對(duì)機(jī)器資源的消耗。結(jié)合線上典型的日志、時(shí)序業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)發(fā)現(xiàn),硬盤、內(nèi)存、計(jì)算資源的成本比例接近 8:4:1??梢缘贸鲇脖P、內(nèi)存是主要矛盾,其次是計(jì)算成本。而這類時(shí)序類場(chǎng)景有很明顯的訪問特性,也就是數(shù)據(jù)具有冷熱特性。時(shí)序數(shù)據(jù)訪問具有近多遠(yuǎn)少的特點(diǎn),比如近 7 天數(shù)據(jù)的訪問量占比可達(dá)到 95%以上,而歷史數(shù)據(jù)訪問較少,并且通常都是訪問統(tǒng)計(jì)類信息。
硬盤成本 方面,由于數(shù)據(jù)具有明顯的冷熱特性,我們采用冷熱分離架構(gòu),使用混合存儲(chǔ)的方案來平衡成本和性能。由于歷史數(shù)據(jù)通常只是訪問統(tǒng)計(jì)信息,我們采用預(yù)計(jì)算 Rollup 換取存儲(chǔ)和查詢性能,類似物化視圖。對(duì)于完全不使用歷史數(shù)據(jù),也可以備份到更廉價(jià)的存儲(chǔ)系統(tǒng)如 cos。其他一些優(yōu)化方式包括多盤策略兼容數(shù)據(jù)吞吐與數(shù)據(jù)容災(zāi),以及通過生命周期管理等定期刪除過期數(shù)據(jù)等。
內(nèi)存成本 方面,我們發(fā)現(xiàn)特別是大存儲(chǔ)機(jī)型,存儲(chǔ)資源采用了 20%內(nèi)存已不足。為了解決內(nèi)存不足問題,我們采用 Off-Heap 技術(shù),來提升堆內(nèi)內(nèi)存利用率,降低 GC 開銷,并且提升單個(gè)節(jié)點(diǎn)管理磁盤的能力。將內(nèi)存占比較大的 FST 移到堆外管理,通過堆內(nèi)存放堆外對(duì)象地址,避免堆內(nèi)外數(shù)據(jù)拷貝。通過 JAVA 弱引用機(jī)制實(shí)現(xiàn)堆外對(duì)象內(nèi)存回收,進(jìn)一步提升內(nèi)存使用率。實(shí)現(xiàn) 32GB 堆內(nèi)內(nèi)存可管理 50 TB 左右磁盤空間,較原生版本有 10 倍提升,并且性能持平,而 GC 優(yōu)勢(shì)提升明顯。
除了內(nèi)核層面的優(yōu)化,該平臺(tái)層通過管控平臺(tái),支持云上服務(wù)資源管理、實(shí)例實(shí)例管理等實(shí)現(xiàn)服務(wù)托管。方便快捷進(jìn)行實(shí)例創(chuàng)建和規(guī)格調(diào)整。通過運(yùn)維支撐平臺(tái)中的監(jiān)控系統(tǒng)、運(yùn)維工具等保障服務(wù)質(zhì)量。并通過正在建設(shè)的智能診斷平臺(tái)發(fā)現(xiàn)服務(wù)潛在問題,實(shí)現(xiàn)了對(duì)內(nèi)外部提供穩(wěn)定可靠的 ES 服務(wù)。
騰訊內(nèi)部,我們通過主導(dǎo) ES 產(chǎn)品開源協(xié)同,發(fā)現(xiàn)潛在問題,共同優(yōu)化完善 ES,避免不同的團(tuán)隊(duì)重復(fù)踩坑。同時(shí)我們也將優(yōu)秀的方案積極貢獻(xiàn)給社區(qū),和官方及社區(qū)的 ES 愛好者們共同推動(dòng) ES 的發(fā)展。以騰訊 ES 內(nèi)核研發(fā)為代表的團(tuán)隊(duì),截至目前我們共提交了 60 多個(gè) PR,其中有 70% 被合并,公司內(nèi) ES 開源協(xié)同 PMC 成員共有 6 位 ES/Lucene 社區(qū) contributor。
5.后記
Elasticsearch 在騰訊內(nèi)外部廣泛應(yīng)用于日志實(shí)時(shí)分析、時(shí)序數(shù)據(jù)分析、全文檢索等場(chǎng)景。目前單集群規(guī)模達(dá)到千級(jí)節(jié)點(diǎn)、萬(wàn)億級(jí)吞吐。通過內(nèi)核增強(qiáng)版 ES 為大家提供高可靠,低成本,高性能的搜索分析服務(wù)。后續(xù)我們?nèi)匀恍柙诳捎眯裕阅芎统杀镜确矫娉掷m(xù)優(yōu)化 ES。比如集群可擴(kuò)展性不足問題,通過優(yōu)化集群擴(kuò)展性支持百萬(wàn)級(jí)分片秒級(jí)創(chuàng)建 index。ES 的存儲(chǔ)成本問題,目前正在研發(fā)存儲(chǔ)與計(jì)算分離方案,進(jìn)一步縮減成本,提升性能。以及存在使用和維護(hù)成本高的問題,后續(xù)通過多級(jí)分區(qū)、智能診斷等提升 ES 的自動(dòng)化和故障自愈能力,降低用戶使用和維護(hù)成本。未來,也會(huì)進(jìn)一步探索 ES 在多維分析領(lǐng)域的其他可能性。持續(xù)在大數(shù)據(jù)領(lǐng)域提供更有價(jià)值的搜索分析服務(wù)。
了解更多
歡迎對(duì) ES 內(nèi)核技術(shù)感興趣的同學(xué),在騰訊云體驗(yàn) Elasticearch 服務(wù)。