Elasticsearch 生態&技術峯會 | Elasticsearch 在清博大數據的應用與實踐

本篇內容是清博大數據技術副總裁王歡帶來的基於Elasticsearch技術的應用與實踐分享。
分享人:清博大數據技術副總裁王歡

關於Elasticsearch在清博的應用和實踐,本文將通過四個部分展開介紹:

  • 關於清博
  • 典型業務場景
  • 痛點與訴求
  • 阿里雲Elasticsearch實踐與收益

一、關於清博大數據

清博數據成立於2014年,是一家專注於內容數據領域,是基於網絡公開數據,依託自然語言處理、知識圖譜、事理圖譜等AI技術,挖掘有價值的數據以及關係,爲政務部門、企業、媒體和高校的網絡空間數據治理,提供一站式解決方案的公司。

清博大數據的主要業務佈局有:

  • 清博指數,已經成爲業內知名的新媒體賬號評估服務體系;
  • 清博輿情,是業內主流輿情SaaS服務平臺,爲數十萬B端網絡品牌跟蹤管理提供一站式服務;
  • 清博融媒,助力政企、校園的融媒體建設;
  • 產業數據,基於數據和技術的積累,在汽車大數據和環保大數據等產業數據領域也有佈局。

二、典型業務場景

上文所提到的業務方向中都有Elasticsearch的參與和支持。下面介紹幾個典型的應用場景。

清博輿情

下圖展示的是清博輿情中常見的分析模塊。

清博輿情利用NLP技術給常見的每條新聞及評論打上7個情緒標籤,然後基於標籤分析每天的情緒走勢和情緒分佈情況。這個應用可以理解爲,針對某個事件,大衆在不同情感表達下的聲量大小。

另外,我們也對事件的發佈和媒體敏感信息報道進行渠道統計,統計後就可以直觀的看到一個事件的重要或敏感的傳播節點,這就爲業務的決策者提供了非常直觀的決策參考。除此之外,系統還爲用戶提供發文類型、提及地區、熱詞分析等十多個常用的統計分析模塊。

以上所描述的統計分析,都是基於Elasticsearch強大的聚合統計能力,包括嵌套的統計能力實現的。由於清博大數據提供的是線上的SaaS服務,在同個頁面會迸發請求查詢或聚合多個接口等需求,這就對Elasticsearch的聚合統計性能和內存使用率,都提出了更高的要求。

多維度的檢索

多維度檢索在清博大數據也是比較常見的業務場景。在輿情高級檢索模塊,清博檢索提供了基於時間、發佈平臺、情感、媒體類別、發佈地區等十多個維度的複合檢索。同時還提供了基於term和match price的精確或模糊檢索的複雜查詢方式。

不同於日誌檢索場景,清博的多維度檢索業務,需要權衡召回率和準確率,需要對標題跟正文設置不同的打分策略。比如給標題設置更高的權重,給正文設置相對較低的權重。另外,產品還能對包括阿拉伯語、日語、韓語、德語、法語等多國語言進行文本檢索,這就涉及到了多語種的分詞與檢索召回。

賬號畫像

下圖是清博指數平臺一個微信公衆號的畫像頁面,展示了公衆號系列數據,包括閱讀統計、閱讀點贊、在看、發文趨勢、發佈習慣等數據指標的統計模塊。通過這些模塊,用戶可以直觀的瞭解一個公衆號的發佈情況、文章傳播情況等,不僅給運營者提供了全方位、可參考的數據,也給廣告投放的用戶提供客觀投放參考。

三、痛點與訴求

上文列舉的不同業務場景都離不開Elasticsearch強大的查詢和聚合能力,那麼實現這樣的功能有哪些痛點與訴求呢?

從上面業務場景列舉可以看出,清博大數據的業務基本上都是基於文本檢索,那麼它具有的特點包括:

  • 需要支持多種語言檢索;
  • 由於是在線的SaaS系統,需要實現亞秒級響應;
  • 需要支持上百個索引字段;
  • 需要滿足聚合查詢多和迭代頻繁;

基於以上的業務特點就要求Elasticsearch具備高性能、平衡檢索的召回率和準確率,並具有動態伸縮的能力。

基於以上的業務特點和服務要求,對清博大數據來講,業務痛點可以分爲三個方面:

1、成本

單篇文檔不同於日誌數據,佔用索引空間大,所需的SSD存儲昂貴;

2、運維

當業務數據不斷增加,需要頻繁擴節點;同時,由於是在線SaaS業務,所以需要實現亞秒級響應速度;並且在節點升級、增加內存等在線升級時,不停止服務。

3、兼容性

實現Elasticsearch集羣遷移、本地化部署,業務代碼無感知適配;雲端備份索引可以兼容開源的Elasticsearch。

針對以上的業務痛點,清博大數據對雲端Elasticsearch也提出了三點訴求:

1、成本

平滑擴縮容,索引支持冷熱分離,熱數據才放到SSD存儲,從而降低存儲成本;

2、運維

需要有簡單的運維工具支持一鍵擴縮容和節點升級等能力;需要支持豐富的運維指標,在達到一定閾值時,可以有不同類型的報警通知;需要支持平滑升級不對業務產生影響;

3、兼容性

阿里雲Elasticsearch 100%兼容開源生態,並支持自定義的分詞器,實現熱更新分詞詞典,方便備份與恢復。雲上備份與索引,可以快速在開源Elasticsearch上恢復或拉起服務。

四、雲上實踐與收益

清博大數據在遷移之前是基於Apache Solr自建的搜索集羣,爲了提升搜索性能和鞏固集羣穩定性,創建了很多小的Solr集羣。在上游數據分析之後,通過一套路由機制寫入到不同的Solr集羣,在查詢時通過同一套機制,自動選擇對應的集羣。在不同的集羣中查詢不同的數據,可以分散單個集羣壓力,如果有小集羣異常只會影響部分業務。

但是太多分散且小的集羣也會出現很多問題,比如增加故障的概率、缺少統一運維管理平臺、運維管理成本過高、無法自動擴充Shard、需要手動增加節點擴容等等。

相比之下,阿里雲Elasticsearch提供智能的、統一的運維平臺,不僅可以多維度地監控告警,也能及時發現集羣問題,而且阿里雲ES專家的支持也減少了大量的運維成本。

阿里雲ES自動Shard,提升系統性能,提高了系統的檢索性能;阿里雲ES節點的伸縮能力,可以靈活應對業務逐步增加,節省大量一次性投入的成本。

在遷移過程中,清博大數據同步升級了數據架構,整個平臺是分層的數據模式。最底層是數據接入層,包括上述提到的各平臺社交文本數據。所有的數據源首先會推送到Kafka集羣,通過消息隊列對各個業務模塊進行檢索。

再往上一層是數據處理和存儲層。在存儲層,像新聞標題、發佈時間、原始URL等信息存儲到HBASE。一些不需要檢索內容的鏡像數據會存到OSS上進行長期存儲,並把OSS的路徑存到HBASE,方便後面的檢查。

在數據處理這一層,使用 Flink 實時流處理引擎,通過RPC的方式實時調用NLP相關的算法服務,爲每一條文本內容打上情感屬性、情緒分類、新聞類型和地域等標籤,方便下游業務使用。

再上一層是整個ES的基礎設施,包括ES集羣和智能網關兩層服務。在ES集羣層,根據業務特點把近兩年的數據放到冷數據集羣,使用價格相對較低的高效雲盤,把近三個月的數據放到熱數據集羣,使用SSD盤進行冷熱集羣分離,同時根據不同平臺大小對索引進行拆分,分爲微信、微博、短視頻等等索引。

爲了提高ES的安全性和訪問的可控性,清博大數據開發了智能網關服務,屏蔽了直連ES的方式。在智能網關層,有很多業務都要調用ES數據,爲了防止單個業務佔用過多資源,影響到其他業務使用,網關可以爲每個業務分配各自的QPS並設置優先級。一旦集羣出現問題,可以對低優先級的業務進行熔斷限流,以保證高優先級的業務。

由於在ES的數據層把索引按照來源進行拆分,數據被分散到多個集羣中,這會給查詢帶來一定的麻煩。爲了方便前端業務的調用,網關路由所有模塊可以根據業務端查詢的數據類型,自動路由到對應的索引,同時網關層也會對業務端查詢進行優化,比如根據時間段選擇對應索引,而不是掃描全部索引。

最上面一層是業務接入層,包括上文提到的輿情業務、指數業務、融媒業務等等。

基於阿里雲ES打造的統一數據平臺,也可以看作是一個分層架構,如下圖。

最底層文檔寫入ES索引前,會先進入路由層。路由服務會根據文檔的來源、發佈時間、機型狀態等,選擇對應的集羣以及索引,比如自動選擇對應平臺或者是對應索引所在的機器。

對日增數據量比較少的平臺,會按照周或月進行索引拆分。對日增數據量很大的平臺,路由會按天創建索引,這樣就避免單個索引過大、數據過於傾斜而影響整個集羣性能的問題,使每個索引的大小保持基本相同。

再向上一層是多個ES集羣,包括不同平臺的數據集羣和冷熱數據集羣。前面一層經過路由策略之後,最終數據會分散到對應集羣的對應索引中。爲了方便查詢,通過開發的Proxy,對用戶特定的索引查詢、多索引查詢和聚合查詢,甚至跨集羣查詢等,可以對數據進行查詢集合,做到對業務端底層的索引細節屏蔽、業務端無感知、降低業務端調用成本,同時也方便底層的迭代升級。

基於以上的架構,在阿里雲的ES數據平臺提供近三個月超過100億的熱數據,在近三個月的索引佔用空間超過60TB,日增網絡公開內容數據超過1.2億,單篇文檔搜索字段超過200。

在這麼大數據量的情況下,頻繁變動升級會帶來一些問題。值得一提的是,利用阿里雲ES診斷功能,可以很方便地發現ES集羣潛在的問題,也爲集羣的運維方向提供診斷經營。

在阿里雲ES各種功能的加持下,清博大數據平臺的穩定性較之以前提升了60%,整個運維時間減少了80%。正是由於阿里雲Elasticsearch平臺的各種能力,讓團隊可以把更多的精力放到產品開發和迭代上,比如基於平臺能力快速開發了輕薄融媒平臺,爲清博融媒平臺提供內容檢索服務。

在開發的政府補貼類應用中提供政策搜索服務,爲後面的推薦算法提供出色的結果,也爲年終公衆號運營畫像類應用提供相關統計服務。除此之外,基於平臺的能力還能提供更多的產品形態。

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

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