分佈式消息通訊-Kafka介紹-筆記

什麼是Kafka後端

  • Kafka是一款分佈式消息發佈和訂閱系統,
    • 具備高性能、高吞吐量的特色
    • 而被普遍應用與大數據傳輸場景。
  • 它是由LinkedIn公司開發,
    • 使用Scala語言編寫,
    • 以後成爲Apache基金會的一個頂級項目。
  • kafka提供了相似JMS的特性,
    • 可是在設計和實現上是徹底不一樣的,
    • 並且他也不是JMS規範的實現

kafka產生背景:api

  • kafka做爲一個消息系統,
    • 早起設計的目的是用做
      • LinkedIn的活動流(Activity Stream)
      • 和運營數據處理管道(Pipeline)。
    • 活動流數據
      • 是全部的網站對用戶的使用狀況作分析的時候要用到的最常規的部分,
      • 活動數據包括
        • 頁面的訪問量(PV)、
        • 被查看內容方面的信息
        • 以及搜索內容。
      • 這種數據一般的處理方式是
        • 先把各類活動以日誌的形式寫入某種文件,
        • 而後週期性的對這些文件進行統計分析。
    • 運營數據指的是
      • 服務器的性能數據(CPU、IO使用率、請求時間、服務日誌等)。

Kafka 的應用場景服務器

  • 因爲kafka具備更好的
    • 吞吐量、
    • 內置分區、
    • 冗餘
    • 及容錯性的優勢(kafka每秒能夠處理幾十萬消息),
  • 讓kafka成爲了一個很好的大規模消息處理應用的解決方案。
  • 因此在企業級應用長,
    • 主要會應用於以下幾個方面:

Ø 行爲跟蹤:架構

  • kafka能夠用於跟蹤用戶瀏覽頁面、搜索及其餘行爲。
  • 經過發佈-訂閱模式實時記錄到對應的topic中,
    • 經過後端大數據平臺接入處理分析,
    • 並作更進一步的實時處理和監控

Ø 日誌收集:框架

  • Kafka經常使用做日誌聚合:
    • 從各個服務器收集日誌存儲到一個集中的平臺進行處理
    • 不少公司的套路是:把日誌集中到Kafka ,而後分發到es和 hdfs
      • 作日誌實時檢索和離線統計數據備份
      • ELKK 框架
    • Kafka也提供 api 來作日誌日誌收集

 

Kafka 自己的架構分佈式

  • Kafka 經過 ZooKeeper 集羣配置和服務協同
    • producer 經過push 發送消息到 broker
    • consumer pull 消息
  • 多個 broker 協同工做
    • producer 和 consumer 部署在各個業務邏輯中
    • 三者經過ZooKeeper 管理協調請求和轉發
    • 這樣就組成了一個高性能的分佈式消息訂閱系統

相關文章
相關標籤/搜索