Kafka具體應用場景介紹

網站活動跟蹤

成功的網站運營都會非常關注站點的用戶行爲並進行分析。通過消息隊列 for Apache Kafka,您可以實時收集網站活動數據(包括用戶瀏覽頁面、搜索及其他行爲等),並通過“發佈/訂閱”模型實現:

  • 根據不同的業務數據類型,將消息發佈到不同的 Topic;
  • 通過訂閱消息的實時投遞,將消息流用於實時監控與業務分析或者加載到 Hadoop、ODPS 等離線數據倉庫系統進行離線處理與業務報告。

能夠實現:

  • 高吞吐:網站所有用戶產生的行爲信息極爲龐大,需要非常高的吞吐量來支持;

  • 彈性擴容:網站活動導致行爲數據激增,雲平臺可以快速按需擴容;

  • 大數據分析:可對接 Storm/Spark 實時流計算引擎,亦可對接 Hadoop/ODPS 等離線數據倉庫系統。

日誌聚合

許多公司,比如淘寶、天貓平臺每天都會產生大量的日誌(一般爲流式數據,如搜索引擎 pv、查詢等),相較於日誌爲中心的系統,比如 Scribe 或者 Flume 來說,消息隊列 for Apache Kafka 在提供同樣高效的性能時,可以實現更強的數據持久化以及更低的端到端響應時間。消息隊列 for Apache Kafka 的這種特性決定它非常適合作爲日誌收集中心:

  • 消息隊列 for Apache Kafka 忽略掉文件的細節,可以將多臺主機或應用的日誌數據抽象成一個個日誌或事件的消息流,異步發送到消息隊列 for Apache Kafka 集羣,從而做到非常低的 RT 時間;
  • 消息隊列 for Apache Kafka 客戶端可批量提交消息和壓縮消息,對生產者而言幾乎感覺不到性能的開支;
  • 消費者可以使用 Hadoop、ODPS 等離線倉庫存儲和 Strom、Spark 等實時在線分析系統對日誌進行統計分析。

能夠實現:

  • 應用與分析解耦:構建應用系統和分析系統的橋樑,並將它們之間的關聯解耦;

  • 高可擴展性:具有非常高的可擴展性,即當數據量增加時可通過增加節點快速水平擴展;

  • 在線/離線分析系統:支持實時在線分析系統和類似於 Hadoop 的離線分析系統。

流計算處理

在很多領域,如股市走向分析、氣象數據測控、網站用戶行爲分析,由於數據產生快、實時性強且量大,您很難統一採集這些數據並將其入庫存儲後再做處理,這便導致傳統的數據處理架構不能滿足需求。

與傳統架構不同,消息隊列 for Apache Kafka 以及 Storm/Samza/Spark 等流計算引擎的出現,就是爲了更好地解決這類數據在處理過程中遇到的問題,流計算模型能實現在數據流動的過程中對數據進行實時地捕捉和處理,並根據業務需求進行計算分析,最終把結果保存或者分發給需要的組件。

能夠實現:

  • 流動的數據:構建應用系統和分析系統的橋樑,並將它們之間的關聯解耦;

  • 高可擴展性:由於數據產生非常快且數據量大,需要非常高的可擴展性;

  • 流計算引擎:可對接開源 Storm/Samza/Spark 以及 EMR、Blink、StreamCompute 等阿里雲產品。

數據中轉樞紐

近 10 多年來,諸如 KV 存儲(HBase)、搜索(ElasticSearch)、流式處理(Storm/Spark Streaming/Samza)、時序數據庫(OpenTSDB)等專用系統應運而生。這些系統是因爲單一的目標而產生,也因其簡單性使得在商業硬件上構建分佈式系統變得更加容易且性價比更高。

通常,同一份數據集需要被注入到多個專用系統內。例如,當應用日誌用於離線日誌分析,搜索單個日誌記錄同樣不可或缺,而構建各自獨立的工作流來採集每種類型的數據再導入到各自的專用系統顯然不切實際,利用消息隊列 for Apache Kafka 作爲數據中轉樞紐,同份數據可以被導入到不同專用系統中。

能夠實現:

  • 高容量存儲:能在商業硬件上存儲高容量的數據,實現可橫向擴展的分佈式系統;

  • 一對多消費模型:“發佈/訂閱”模型,支持同份數據集能同時被消費多次;

  • 同時支持實時和批處理:支持本地數據持久化和 Page Cache,在無性能損耗的情況下能同時傳送消息到實時和批處理的消費者。

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