本篇内容是清博大數據技術副總裁王歡帶來的基于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平台的各種能力,讓團隊可以把更多的精力放到産品開發和叠代上,比如基于平台能力快速開發了輕薄融媒平台,為清博融媒平台提供内容檢索服務。
在開發的政府補貼類應用中提供政策搜索服務,為後面的推薦算法提供出色的結果,也為年終公衆号運營畫像類應用提供相關統計服務。除此之外,基于平台的能力還能提供更多的産品形态。
本文為阿裡雲原創内容,未經允許不得轉載。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!