kafka-概述

概述

kafka 是什麼 ?

Apache Kafka® is a distributed streaming platform

是一個分佈式的流(stream) 框架 

那麼它意味着什麼呢?一個流框架有三個重要能力 :

  • 發佈-訂閱流記錄,就像消息隊列
  • 用 fault-tolerant (錯誤容忍,翻譯不一定正確,可以查一下 fault-tolerant 到底指的是什麼意思)的方式存儲流記錄
  • 處理消息當流到達的時候(有點像事件驅動)

kafka 中幾個重要的概念 :

  • Kafka is run as a cluster on one or more servers that can span multiple datacenters.(也就是分佈式)
  • The Kafka cluster stores streams of records in categories called topics.(節點儲存流記錄的目錄稱爲 topics )
  • Each record consists of a key, a value, and a timestamp (流記錄包括 key,value,timestamp)

kafka 中核心的 API 有 :

  • Producer API
  • Consumer API
  • Streams API
  • Connector API
  • Admin API

總體架構圖 :

img

img

img

img

總體來看 ,kafka 這個中間件只需要和 broker 節點進行聯繫. 深入到細節一點 , 那就是信息被分到某個節點 ,然後一個消息由多個分片組成, 多個分片組成像 SQL 讀寫分離一樣的複製備份架構 ,防止數據丟失 (真TM人才 ,佩服 kafka 的設計)

特性-保證

  • Message 消息先發送的先被記錄在在 log 中,不會因爲其他因素影響 order
  • 消費者看到記錄是按順序排列在log 中的
  • 一個 topic 擁有 N 個副本,我們可以容忍 N-1 個機器失敗 。

應用場景

  • kafka as message queue
  • Kafka as a Storage System
  • Kafka for Stream Processing
  • Putting the Pieces Together

kafka 大體用在兩方面的應用場景 :

  • 構建實時的在系統或應用之間可靠流通的流數據管道(例如消息隊列)
  • 構建實時處理,轉化流數據的流應用(例如配合其他系統做大數據處理)

安裝並運行

安裝 zk

安裝 zk 之前肯定要有 java 環境,這個不用多說(zk 是 java應用),安裝好後爲了讓外界的zk圖形化界面工具看到 znode 的信息,開放 2181 端口 。

firewall-cmd --zone=public --add-port=2181/tcp --permanent
重新加載配置!!

firewall-cmd --reload  

啓動 kafka

這個就簡單了,安裝官方的啓動方式即可。

> bin/kafka-server-start.sh config/server.properties

簡單的 shell 文本

每次都要啓動兩個東西,於是我寫了簡單的shell 文本

## 先啓動 zk
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/
./zkServer.sh start

## 再啓動kafka 
cd /usr/local/kafka/kafka_2.12-2.5.0/bin/
./kafka-server-start.sh ../config/server.properties

參考資料

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