Elastic Meetup 2021 深圳站回顧


Elastic Meetup 

2

0

2

1

回         顧


一、背景

一波未平一波又起的疫情對大家的生活、工作造成了一定影響。在信息化飛速發展的今天,小夥伴們技術交流的方式也變得多樣化。2021年8月21日下午,ES 中文社區聯合騰訊雲在騰訊濱海大廈舉辦了深圳地區年度首次 Meetup,活動採用線下現場參與、騰訊會議、雲+社區線上同步直播的方式進行。來自騰訊、Tapdata、字節跳動、vivo 的技術專家們給 ES 社區的小夥伴們帶來了一場精彩的技術視聽盛宴。



二、社區發展

活動開始 ES 深圳分會主席楊振濤先生回顧了深圳 Meetup 歷史並對本次活動表達了祝福,分會副主席黃華先生介紹了 ES 社區最新的發展動態。



截止目前 Elasticsearch 總下載量達到 8.3 億,Elastic Stack 技術棧產品的下載量超過 25 億。作爲開源產品,發展趨勢非常火爆,這背後得益於 ES 在大數據生態下服務場景的不斷擴展。ES 社區的發展也是非常的迅猛,全球近百個城市舉辦過 Meetup 活動,共 5 萬多參會者,全球社區用戶量超過 10 萬。中文社區有 9 個城市定期舉辦 Meetup,相信後續會越來越多。ES 技術棧這麼火爆主要是因爲搜索領域它是王者,海量日誌實時分析領域它正在成爲很多公司的平臺化、數據中臺的標配。



雲是未來,擁抱雲原生。騰訊雲和 Elastic 公司達成商務戰略合作已有兩年多時間,雲上的託管 ES 服務已成爲大數據產品線的火熱品牌。與此同時,騰訊並沒有白嫖開源產品,除了引入官方 X-Pack 商業特性,技術層面進一步擁抱開源、貢獻開源。騰訊 ES 的內核團隊向社區貢獻了大量的 Patch,騰訊已成爲 ES 社區全球貢獻最多的第三方公司。



三、主題分享

1

騰訊 Elasticsearch 壓縮編碼優化實踐


首先分享的是來自騰訊 ES 內核團隊的專家工程師畢傑山老師,他的分享主題是騰訊 Elasticsearch 壓縮編碼優化實踐。


ES 底層的存儲引擎是 Apache Lucene,它支持多種數據結構,包括行存、列存、倒排索引、數值類型索引(BKD-Tree)等等。正因爲其支持多種數據結構,使得 ES 能支持的業務場景非常豐富。也正是因爲多種數據結構的支持,導致 ES 的存儲成本開銷比較高。另外 Lucene 的發展已有二十多年曆史,在各種數據結構的壓縮優化、編碼優化方面並沒有演進的特別快。


壓縮算法的技術門檻較高,一般涉及衆多的複雜算法,重複研發一種新的壓縮算法代價非常大,業界也有較多成熟的算法例如 Zstd、Brotli、Deflate 等。從 ES 衆多的數據結構中尋找文件存儲可優化點本身比較挑戰,我們需要兼顧壓縮比和性能的開銷。除了引入通用的壓縮算法,還要針對部分結構做深度的編碼優化。


在本次分享中,傑山老師深入淺出地剖析了壓縮算法的基本原理,解析了騰訊 ES 在壓縮編碼方面系統性的優化。





該主題問答環節:

Q1

這些新特性基於哪個版本做的?

基於 es 7.10 版本,對應着 lucene 的版本爲 8.7。


Q2

能不能不對行數據進行壓縮?

我們發現在 es node 側壓縮的話會特別消耗 CPU,所以在外部提前做了壓縮。

行數據壓縮是默認開啓的,目前並沒有提供關閉的選項。因爲大部分場景下都對存儲成本非常敏感。外部提前對數據做了壓縮然後再寫進來的話,得考慮如何分詞,這裏需要很強的定製,也有使用場景上的限制。對我們來說,這種方案並不具有通用性。


Q3

行存有沒有可能提供用戶自定義排序呢?

ES 的排序是索引維度的設定,不針對具體的數據結構,但對排序的字段類型有一些限制,只能是 boolean, numeric, date 和 keyword 類型且開啓了 doc_value,當設定以後,整個文檔的所有數據結構會按照設定的字段排序後的 doc id 順序進行寫入,包括寫入和 merge 流程。對於行存,Lucene 底層會將 flush 前的行存先寫入一個臨時目錄,flush 時再從臨時目錄讀取根據 doc id 排序再按順序寫入,因此行存帶排序寫入開銷會比較高。


Q4

存儲計算分離大概什麼思路可以簡單說下麼?

存算分離的主要實現思想是基於共享存儲實現多個節點的數據共享,ES 層面只保存一個物理副本。文件系統底層確保數據本身的可靠性,同時 ES 提供邏輯上的主從副本,實現數據一寫多讀的能力。從而達到優化存儲、計算成本的目的。

2

ES + MongoDB 的實時數據融合平臺架構

 

接下是來自 Tapdata 的資深架構師楊慶麟老師分享基於 ES + MongoDB 的實時數據融合平臺架構。跨地域業務需求在數據一致性、實時性層面始終是痛點。例如珠寶行業的頭部客戶在中、港、臺、澳等多地有業務系統。由於歷史原因,系統還是多年前的架構,存儲系統以 Oracle 爲主,數據冗餘、訂單狀態無法統一、運維成本高。Tapdata 提供了一套面向業務的 DaaS 解決方案,基於 ES 和 Mongo 的跨地域實時數據融合平臺。上線之後統一了各個地域門店後臺,大幅降低了數據維護成本。




2

該主題問答環節:

Q1

數據同步時,針對多個數據源多個表的數據聚合,請問是通過腳本來處理的,還是通過編碼處理?

通過 js 來做的,⾃研的實時計算引擎。


Q2

數據庫實時同步的原理是什麼?

針對 oracle,採⽤的是 logminer;mysql 採⽤的是 binlog ⽅式;mongo 是 changestream。


Q3

通過 mongo+es 完成業務數據的交付,那麼 ES 會處理計算嗎?

ES 不負責計算, mongo 也不負責⼤部分計算。⼤部分計算都是通過平臺完成的,mongo 負責⾼併發的更新,es 負責⾼併發、搜索場景的查詢。

茶歇時間


在兩場主題分享完畢後的技術交流環節,活動主辦方在美麗的騰訊濱海大廈提供了精美的茶歇。




3

字節跳動在ES的內核擴展


接下來是來自字節跳動的魯蘊鋮老師分享字節跳動在 ES 的內核擴展。字節跳動實現了基於內部自研 NFS 的存算分離功能,實現了一寫多讀的架構,底層雲存儲多副本保證可靠性。Primary 分片承擔所有的寫操作,通過傳送 Segment Infos 到各個副本,實現副本同步,基本可以實現秒級副本擴容。


官方的跨集羣複製需要 License 支持,字節跳動實現了自研的跨集羣複製能力,並採用了 Leader 向 Follower Push 的模式進行同步,提升數據同步的實效性。除此之外,他們還對向量化檢索進行了插件化的擴充,支持更多的算法。鏈路安全方面,實現了底層存儲加密、支持基於 GDPR 認證授權方式等。在可觀測性方面,ES 擅長於做鏈路追蹤,他們對 ES 本身的讀寫流程進行了函數調用鏈的追蹤,便於性能分析。




2

該主題問答環節:

Q1

向量化怎麼實現的,性能如何?

通過擴展 ES 的 Engine plugin,然後對於不同的向量組件實現自己 codec,性能在 kw 級數據下基本在百 ms 以內。


Q2

審計的實現,性能如何?

會通過 Action Filter 將用戶的請求主動上報到審計日誌或平臺,對於百萬請求量,寫入降採樣,查詢全量的情況下,性能損耗低於2%。

4

vivo Elasticsearch集羣應用實踐


接下來是來自 vivo 的資深 DBA 劉石林老師分享 vivo Elasticsearch 集羣應用實踐。在大數據橫行的今天,如何規模化運營 Elasticsearch 集羣、提升數據管理者的幸福感,成爲各個企業需要重點關注的問題。在實際業務運營中經常會遇到各種挑戰,例如高併發讀寫資源開銷過高、 Elasticsearch 本身存在的 Bug 以及各種業務使用不當導致的問題等。如果企業內沒有很好的平臺支撐,靠人肉管理,會給數據管理者帶來很大的挑戰。本次分享中,主要介紹了 vivo 使用 Elasticsearch 的經典場景,以及如何基於自主研發的 ES 管理平臺規模化地運營 ES 集羣。




2

該主題問答環節:

Q1

這個可視化界面是用哪個工具?

可視化界面是自主開發,產品經理參考了 Cerebro 的管理界面。


Q2

請問擴容的時候,會調整主分片數麼?

暫時沒有考慮,我們擴容只擴容節點數量,主要原因是因爲調整主分片數需要 reindex,除非業務有需要可配合線下操作。


Q3

請問你們 index 生命週期管理是怎麼做的,是用官方的 ilm 嗎?你們對升級 es 版本怎麼看?

我們暫時沒有使用官方的 ilm 相關模塊,但是我們參考了他們的基本邏輯,由業務調用 api 接口實現索引生命週期管理。我們要求統一版本,非特殊情況 (bug 問題導致業務問題不可正常使用) 不會給業務維護特殊版本號,我們當前使用版本都是內部測試後,滿足大部分業務場景需求才會選擇。


Q4

會有定期合併索引的操作嗎?

暫時沒有這個方面需求,後續平臺可能會集成。


Q5

一般集羣控制多少分片數左右比較好?

社區版本對分片數做了軟限制,單節點不超過1000個分片,社區版本集羣超過3萬分片時元數據變更已非常緩慢(數秒甚至十幾秒),社區已有團隊對集羣擴展性做了相關優化,可支持到百萬級分片。可參考:騰訊Elasticsearch百萬級分片擴展性優化



四、視頻回放


剪輯中,稍後更新



五、圓滿結束

 疫情阻擋我們出行,但阻擋不了技術的演進,阻擋不了 ES 社區的發展,讓我們下一期深圳 Meetup 再見!


Elastic Meetup 2021 深圳站大合影



感謝騰訊會議、騰訊雲+ 社區對本次活動直播提供技術支持!


感謝本次活動推廣社區:



招聘信息

Job board

社區招聘欄目是一個新的嘗試,幫助社區的小夥伴找到心儀的職位,也幫助企業找到所需的人才,爲伯樂和千里馬牽線搭橋。有招聘需求的企業和正在求職的社區小夥伴,可以聯繫微信 medcl123 提交招聘需求和發佈個人簡歷信息。

Elastic中文社區公衆號 (elastic-cn)

爲您彙集 Elastic 社區的最新動態、精選乾貨文章、精華討論、文檔資料、翻譯與版本發佈等。

喜歡本篇內容就請給我們點個[在看]吧


本文分享自微信公衆號 - Elastic中文社區(elastic-cn)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章