kafka-1-簡介

kafka 簡介

定義

kafka 是一個分佈式的數據流平臺算法

數據流平臺有3個關鍵特性:緩存

  • 發佈訂閱記錄流(streams of records),相似於消息隊列或企業級的消息傳遞系統
  • 以容錯的持久化方式存儲記錄流
  • 當記錄流產生時,進行相應處理

kafka 一般用於兩大類應用:服務器

  • 構建用於系統和應用間可靠的獲取數據的實時數據流管道
  • 構建轉換或響應數據流的實時流應用程序

簡單的說併發

  • 能夠做爲一個可靠的數據流管道
  • 用於處理實時數據流的應用程序

總的來講分佈式

kafka是一個提供(實時)讀寫數據流的分佈式中間件,並提供對記錄流的持久化功能高併發

基礎概念

  • kafka 做爲集羣可運行在一臺或多臺服務器上,可跨多個數據中心
  • kafka 使用topic對存儲的記錄流進行分類
  • 一條記錄(消息)由key,value 和 timestamp(時間戳)組成
  • kafka集羣中的每一個節點稱之爲broker

特性

  • 高吞吐,低延遲
  • 可擴展,可動態增長節點,可從新分配分區(熱擴展對運行中程序的影響待確認
  • 持久性,可靠性:支持數據持久化到硬盤,並支持副本機制,
  • 容錯性:容許集羣中節點失敗(若副本數量爲n,則容許n-1個節點失敗)
  • 高併發:支持數千個客戶端同時讀寫

應用場景

  1. 消息隊列(Messaging)oop

    可代替傳統消息隊列:解耦,緩存消息性能

    • 低延遲
    • 強大的持久化保證
  2. 網站活動跟蹤(Website Activity Tracking)網站

    用戶網站的活動(page views, searches, other)根據類型被髮布到不一樣的topic,這些被髮布到topics中的數據能夠做爲數據源被應用在不一樣的場景:實時處理程序,實時監控,被加載至 Hadoop 或離線數據倉庫進行數據的離線處理和報告等。日誌

    由於活動信息量很是大,主要用到如下特性

    • 高吞吐量
  3. 度量(Metrics)

    kafka一般用於監控一些可操做的數據(operational monitoring data)。涉及從分佈式應用程序中彙總統計信息,而後生成集中的數據源

  4. 日誌聚合(Log Aggregation)

    許多人使用kafka來替代日誌聚合解決方案。日誌收集系統一般從服務器收集物理日誌文件,並將其載入一箇中心繫統(文件服務器或HDFS)進行處理。與Scribe(Facebook開源的日誌收集系統),Flume(Flume最先是Cloudera提供的日誌收集系統,目前是Apache下的一個孵化項目,Flume支持在日誌系統中定製各種數據發送方,用於收集數據)等以日誌爲中心的系統相比,kafka 具有一樣出色的性能,更強的耐用性(副本機制)和更低的端到端延遲

  5. 流處理(Stream Processing)

    處理由多個階段組成的處理管道中的數據。從一個topic中消費,而後彙總,轉換爲新的topic供後續處理。如新聞推薦:抓取數據發佈到topic1->讀取數據,格式化,去重->topic2->讀取數據推薦給用戶

  6. 事件朔源(Event Sourcing)

    Event Sourcing就是基於時間記錄一個對象的全部事件,進而根據一系列事件來獲得其狀態(記錄事件而非狀態,有點像binlog)。Kafka 能夠存儲很是多的日誌數據,爲基於 event sourcing 的應用程序提供強有力的支持

  7. 提交日誌

    kafka 能夠從外部爲分佈式系統提供日誌提交功能。該日誌有助於在節點之間複製數據,並充當故障節點恢復其數據的從新同步機制,kafka的日誌壓縮(不是壓縮算法,而是日誌的清理,合併機制)特性支持這一用法。

相關文章
相關標籤/搜索