開源最大的特征就是開放性,雲生态則讓開源技術更具開放性與創造性,Elastic 與阿裡雲的合作正是開源與雲生态共生共榮的典範。值此合作三周年之際,我們邀請業界資深人士相聚雲端,共話雲上Elasticsearch生态與技術的未來。
本篇内容是上海樂言資訊科技有限公司Elasticsearch、Kafka負責人徐二濤分享的Elasticsearch在樂言的多場景應用實踐。
分享人:上海樂言資訊科技有限公司Elasticsearch、Kafka負責人徐二濤
視訊位址:
http://cloud.video.taobao.com/play/u/3177173649/p/1/e/6/t/1/296822688713.mp4關于Elasticsearch在樂言科技的多場景應用實踐,本文将通過三個部分展開介紹:
- 背景介紹
- ES的核心價值
- ES在樂言的應用場景
- ES面臨的挑戰
一、背景介紹
上海樂言資訊科技有限公司(下文簡稱“樂言科技”)成立于2016年4月,緻力于将AI前沿技術賦能各垂直行業客戶,在電商客服、金融咨詢、政務問答醫療問診等領域有廣泛應用。
樂言科技的AI智能客服産品“樂語助人”,具備了自動應答訓、訓練客服、協同人機互動等功能。
二、ES的核心價值
展開介紹ES的核心價值前,首先介紹下ES在樂言科技的業務體量,Elasticsearch在樂言科技支援了多條業務線,包括樂語助人、智能營銷、智能推薦、彙樂讀。
樂言科技各個業務使用ES的情況都不相同,目前共有30多套ES叢集,每天産生50T的資料量,每月的存儲資料量級達到P級,雙十一期間每天寫入資料甚至達到每秒200萬。
ES的核心價值離不開Elastic Stack生态圈。近幾年Elastic有很大的發展,一方面它的使用場景很豐富,主要是基于ES的搜尋和分析,具有多種場景應用。目前,ES可以提供的解決方案有搜尋、日志分析、名額分析和安全分析等。
在開源領域,ES有比較成熟的技術元件,比如可視化的Kibana,搜尋和查詢可以在Kibana彙內建各種各樣的直覺的圖表和柱狀圖。Elasticsearch是分布式存儲計算一組多副本的,在保證高可用性下又保證性能。資料抓取主要有Logstash和Beat。Beat可以結合開源元件自己編寫。
從商業的角度來看,X-pack具有更豐富的功能,比如安全、報警、監控和圖查詢、機器學習等方面。這些X-pack的功能對于開源來說是比較缺乏的,當下很多雲廠商都對以上這些功能做了封裝。
三、ES在樂言的應用場景
ES在樂言科技的應用場景很豐富,比如日志分析搜尋、業務搜尋、營運資料、資料分析等等。
在日志系統,樂言科技主要收集外部日志、系統日志、堡壘機日志和業務日志。在業務搜尋領域,主要包括商家背景的話術搜尋、問答搜尋和商品過濾。營運資料包括營運系統的Galaxy系統、營運人員和圖示繪制。Galaxy系統也是基于ES研發的,由于ES開箱即用的搜尋功能和資料分析功能,大大提高了開發效率。
在營運系統中,營運人員使用Galaxy系統可以很好的進行資料分析,在Kibana上也可以進行多種多樣的圖示繪制。資料分析後,Kibana也可以支援導出。另外,還有豐富的Rest API可以調用。
在資料分析方面,樂言科技可以對使用者的資料打各種各樣的标簽,然後每天離線實時寫入ES,最後生成使用者畫像、使用者标簽和統計分析。
總而言之,在資料挖掘和分析方面,ES提供了不可小觑的能力。
ES在樂言科技的應用場景——日志搜尋分析
日志系統在樂言科技有很廣泛的應用。樂言科技的日志架構是經典的ELK架構。ELK架構最左邊是系統日志,通過syslog輸出到Kafka;Web日志通過Logstash做一些解析,然後将結構化的資料寫入到Kafka;容器日志是基于filebeats實作服務發現的一些功能,可以将容器打上不同的tag,再将需要收集的容器打到不同的Kafka的Topic;應用日志封裝了SDK,通過log元件接入Kafka-appender, 然後将資料通過序列化再寫入Kafka。
Kafka基于goagent到Elasticsearch,不僅支援基于pro buff的解析,針對logstash來說也能節省不少資源,大大提高Elasticsearch的寫入。Kibana是基于業務日志和系統日志的搜尋。
在日志采集中,應用日志主要用于異常日志和慢日志,用來定位問題;Web日志主要用于監控web伺服器的營運情況,以及一些Web伺服器請求情況的監控;系統和堡壘機日志,可以進行一些日志的分析,用來做安全分析。
ES為日志提供了一套比較完美的解決方案,它的主要特點就是任何一個開發運維的同學都可以使用成熟元件,并通過簡單的部署搭建一個完整的日志分析服務。從日志的實時性來講,即使在億級的日志也能達到10秒級的查詢,相對于傳統的資料解決方案小時級的時效性都是非常高的。即使在億級别的日志,在互動式分析上ES的搜尋響應也可以做到秒級。
ES提供了非常豐富的查詢分析能力,支援全文搜尋。由于ES基于反向索引和存儲資料結構,基本所有不同類型的搜尋都可以實作。作為不同行業日志搜尋最廣泛的形式,ES非常完美地解決了日志實時分析應用場景,這也是最近幾年ES快速發展的原因之一。
ES在樂言科技的應用場景——Web日志統計分析
針對Web的請求監控,ES可以對請求狀态碼占比及實時的qps進行繪制圖示,比如基于timeline走勢的繪圖,或基于一些次元的餅狀圖等等。
在這樣的Web日志系統,排障是互動式的可視化操作,非常友善。比如發現一個請求有大量的502, 就可以在Kibana上通過過濾條件過濾出502的相關請求,可以看到502的surname等資訊。總而言之,在Web日志分析方面有很強的競争力。
另外,ES還可以支援擴充,可将來源IP進行GeoIP庫的解析,比如解析成地理位置,或檢視Web請求分布的情況。
ES在樂言科技的應用場景——業務搜尋
業務搜尋在商家背景,包括商品過濾、話術搜尋、問答搜尋和搜尋結果排序等功能。對ES搜尋條件可以進行多元度的組合。
在業務搜尋方面來說,最主要的特點是高可用性,ES的高可用性可達到99.99%。這依賴于阿裡雲ES,可以建立跨區的部署,支援單機可用的故障容災。業務搜尋一般都比較複雜,ES搜尋的高性能也非常突出。它支援單台萬級qps搜尋,響應實踐平均在30毫秒以内。
ES在樂言科技的應用場景——營運資料分析
營運資料分析可以對店鋪、訂單、商品或使用者等次元繪制營運資料監控圖表,包括餅圖、柱狀圖或基于時間線的線狀圖。
由于ES在多元度的聚合排序是相當強勁的,是以ES在開發能力上有豐富的Rest API 非常友善,對于開發效率的提升也很有幫助。
ES有成熟的可視化工具,這就對營運成員很友好,使得他們的學習成本降低,非常簡單的就可以繪制各種分析或監測所需的圖表,包括在Kibana中檢索的資料做過濾,或用于其他的分析等等。
ES在樂言科技的應用場景——資料分析
樂言科技的資料分析會給使用者打多種多樣的标簽,離線統計之後形成使用者畫像,寫入ES,再通過ES的強大聚合和分析能力,觀察老使用者的流失率和新使用者的情況,包括複購使用者等等很多有價值的資料。同時,基于ES搜尋分析的能力,在大資料報表生成方面,也是很友善的。
總而言之,ES在未來資料挖掘中可以提供更多幫助。
四、ES面臨的挑戰
ES在使用過程中面臨的挑戰包括日志和搜尋兩方面。
日志的挑戰
從日志的角度來看,資料量非常大,每天有超過50T的資料産生,若保留30天就會達到P級的日志;日志還有低延遲和高并發寫入的特點,這就需要SSD存儲,随之而來的就是成本高的問題。
是以從日志的角度來看,挑戰就是還沒有很好的節約成本的架構。樂言科技的解決方案是采取hot&warm+oss歸檔的架構。Hot主要是基于SSD節點進行存儲,且隻保留7天資料,超過7天會定期轉存到warm節點,它的成本相對較低。同時這些資料都會寫入OSS歸檔一份,用于查詢超過1個月的資料。另外Logstash和Beat在Kafka寫的效率不高,這裡樂言科技重新編寫了goagent,以節省資源。
另外,通過APP名稱建索引,然後不同APP名稱對應的索引在ES中表留了時效性,也可以節省成本,包括限制研發、列印日志的規範等等。
搜尋的挑戰
搜尋的挑戰主要是高可用性和高性能,不僅要達到99.99%可用性還要做到比較豐富的性能查詢。是以從單機可用區故障容災方面來講,主要是使用阿裡雲ES在建立過程中建立的多可用區,即使這樣也避免不了ES叢集會有故障。是以在重要的ES搜尋方面,樂言科技的解決方案是做了一主一備的搜尋。一主一備是雙寫,主份是以查詢為主的,備份也可以進行少量級别的查詢。如果主份有問題,程式可以自動接入到備份叢集。
在開源Elasticsearch的安全性也是很大的挑戰。針對這個問題的解決方案,樂言科技做了基于Aliyun Elasticsearch支援的X-pack認證,通過不同的role和user完成關系架構,然後配置設定給所有級别一個權限,以保證資料的安全性。