UCloud Elasticsearch服務UES應用場景分析

UCloud Elasticsearch服務UES應用場景分析

4 人贊了文章

當一個系統業務數據量達到百億條的時候,通常會引出一些問題:

1.數據怎麼存儲,存儲到哪裡

2.怎麼保證數據安全,安全存儲策略是什麼

3.數據怎麼檢索,怎麼做到快速響應

4.怎麼對數據進行實時的統計分析

作為一款開源的定位於全文搜索引擎服務的Elasticsearch,可能是這些問題下比較高效的一種解決方案。那麼,Elasticsearch的適用場景,能在什麼地方發揮作用?Elasticsearch的特點優勢又是什麼?總的來說,涉及搜索的業務場景可能都會有Es的用武之地,下面將介紹Es的幾種常見業務場景。

日誌分析

問題引入:在複雜的計算機系統裡面,一個系統可能由成千上百台伺服器構成,很多系統不在一個地區機房,甚至有跨國家的;即使是在一個地區的系統,也有不同的來源,比如:操作系統、應用服務、業務邏輯等等。它們無時不刻都在產生新的各式各樣的日誌數據。

面對如此海量的分布在各個伺服器上的日誌數據,一旦我們需要去排查一些重要的信息,使用傳統的方式登陸到一台台機器上查看顯然有點力不從心。因此,建立一套集中式的日誌管理系統,把不同來源的日誌數據集中整合到一個地方再進行分析就顯得尤為重要。

一套完整的集中式日誌管理系統,主要包含以下幾個功能:

? 採集-能夠採集不同地區多種來源的日誌數據

? 傳輸-能夠穩定地把日誌數據傳輸到中央系統

? 存儲-能夠安全的存儲日誌數據

? 分析-能夠提供高效的日誌數據分析,並可以支持UI展現

? 告警-能夠提供監控機制,異常信息告警

解決方案:ELK

ELK是一套集中式日誌管理方案,由ElasticSearch + Logstash + Kibana三個開源軟體組成。UES基於ElasticSearch和Kibana開發,使用UES服務的ELK協議棧如下圖所示:

Logstash Agent收集不同來源的Server產生的日誌,並存放到Elasticsearch集群中,而Kibana則從ES集群中查詢數據生成圖表,加上配置 Nginx 實現簡單的用戶認證,再返回給瀏覽器端。

Elasticsearch 是一個實時的分散式搜索和分析引擎,它可以用於全文搜索、結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。

Elasticsearch的主要特點:

? 分散式的實時文檔存儲系統

? 分散式的實時分析搜索引擎

? 多數據源,文檔導向,所有的對象全部是文檔

? 高可用性,易擴展,支持集群(Cluster)、分片和複製(Shards 和 Replicas)

? 支持插件機制

? restful風格介面,支持Json

Logstash 是一個具有實時渠道能力的數據收集引擎。它是一個完全開源的工具,可以對你的日誌進行收集、過濾,並將其存儲供以後使用。

Logstash主要特點:

? 幾乎可以訪問任何數據

? 可以和多種外部應用結合

? 支持彈性擴展

Logstash由三個主要部分組成:

? Shipper-發送日誌數據

? Broker-收集數據,預設內置 Redis

? Indexer-數據寫入

Kibana 是一款基於 Apache 開源協議,使用 JavaScript 語言編寫,為 Elasticsearch 提供分析和可視化的 Web 平台。它可以在 Elasticsearch 的索引中查找、交互數據,並生成各種維度的表圖。

使用UES作為日誌分析管理的案例分析如圖所示:

從案例中可以看出使用ELK技術來做日誌管理和傳統方式的對比。結果顯而易見,使用ELK技術能在最短時間內解決問題,在日誌管理方面更加便捷高效。

全文檢索

如今,無論是互聯網信息還是企業內部每天產生的信息,都在以指數級增長。對於企業內部,在每天產生的大量數據尤其是非結構化數據中,如何快速查找到對企業內部有用的信息,幾乎成為每個公司開始關注的重點。

Elasticsearch在實現全文檢索的過程中,首先要確定分詞器,Es默認有很多分詞器。一般中文分詞器使用第三方的ik分詞器、mmsegf分詞器和paoding分詞器,最初構建於lucene,後來移植於Es。目前在最新版的Es中,使用的是ik分詞器。UES已經內置安裝了ik分詞器,並且支持自定義分詞詞庫。

當用戶產生大量的文本數據時,Es均會將其進行分詞並將這些詞語保存在索引中,只需輸入關鍵詞進行查詢,索引就能起到作用,查找對應的相同查詢詞,從而實現全文檢索。全文檢索的架構設計如下圖:

其中,Elasticsearch服務端進行數據索引存儲,Server提供檢索介面,瀏覽器端負責數據渲染和界面呈現。

傳統資料庫替代

隨著Elasticsearch技術的發展,使得Es已經超越了其最初的純搜索引擎角色,新增了數據聚合分析和可視化的特性。如果遇到千萬級數量的文檔需要通過關鍵詞進行檢索時,Es肯定是最佳選擇。當然,如果文檔格式是Json的,也可以把Es當作一種NoSQL資料庫,對數據進行多維度的分析。

Elasticsearch是可以支持持久存儲、統計等多項功能的現代搜索引擎,這種特性也決定了某些場景下Es可以作為主要的後端服務存儲。Es替代傳統DB的前提是業務不對操作的事務性有特殊要求,由於 Es的許可權管理並不是特別完善,所以只把Es作為內部存儲是可以替代傳統資料庫的。

還有一種場景:在一個已經運行了很長時間的複雜系統中添加檢索服務。一種非常冒險的方法是重構系統以支持使用Es,而相對安全的方法是將Es作為新的組件添加到現有系統中。

如圖所示的MySQL資料庫和Es集群存儲,需要找到一種方式使得兩存儲之間實時同步,例如 logstash-input-jdbc 插件。

其實Elasticsearch的應用場景遠不止這些,只有不斷嘗試,接觸新的應用場景,我們才有機會獲得更好解決方案的經驗。UES作為一款平台產品推出,旨在應用到客戶廣泛的業務場景中,例如:

  • 數據分析場景:分析網址、移動設備、伺服器等非結構化和半結構化日誌,分析傳統資料庫中數據,用於錯誤排查、應用程序監控、欺詐檢測、遊戲、廣告等;
  • 全文搜索場景:電商、O2O、企業等行業的搜索與導航服務;
  • 實時統計分析場景:應用程序、用戶點擊等實時統計分析;
  • 分散式文檔處理場景:對Json支持友好,支持地理位置查詢。

UES可以實現集群化的快速部署,極大降低人力運維成本。多種節點類型的提供、靈活的計費方式、支持業務動態擴容,此外集群豐富的預裝插件和監控指標為用戶集群使用功能和數據安全保駕護航。


推薦閱讀:

搜索引擎登陸口集合以及博客rss提交站點大全
秒收??想讓網站快速被搜索引擎收錄?我有絕招
搜索任何你想搜的東西,僅2M大小
10款相似圖片搜索引擎

TAG:雲計算 | 搜索引擎 | 日誌分析 |