Kafka的特點:
以時間複雜度為O(1)的方式提供訊息持久化能力,即使對TB級以上資料也能保證常數時間複雜度的訪問效能。
高吞吐率。即使在非常廉價的商用機器上也能做到單機支援每秒100K條以上訊息的傳輸。【據瞭解,Kafka每秒可以生產約25萬訊息(50 MB),每秒處理55萬訊息(110 MB)】
支援Kafka Server間的訊息分割槽,同時保證每個Partition內的訊息順序傳輸。
分散式系統,易於向外擴充套件。所有的producer、broker和consumer都會有多個,均為分散式的。無需停機即可擴充套件機器。
訊息被處理的狀態是在consumer端維護,而不是由server端維護。當失敗時能自動平衡。
同時支援離線資料處理和實時資料處理。
Kafka的整體架構非常簡單,producer、broker(kafka)和consumer都可以有多個。Producer,consumer實現Kafka註冊的介面,資料從producer傳送到broker,broker承擔一箇中間快取和分發的作用。broker分發註冊到系統中的consumer。broker的作用類似於快取,即活躍的資料和離線處理系統之間的快取。客戶端和伺服器端的通訊,是基於簡單,高效能,且與程式語言無關的TCP協議。
Kafka基本概念:
Topic:特指Kafka處理的訊息源(feeds of messages)的不同分類。
Partition:Topic物理上的分組,一個topic可以分為多個partition,每個partition是一個有序的佇列。partition中的每條訊息都會被分配一個有序的id(offset)。
Message:訊息,是通訊的基本單位,每個producer可以向一個topic(主題)釋出一些訊息。
Producers:訊息和資料生產者,向Kafka的一個topic釋出訊息的過程叫做producers。
Consumers:訊息和資料消費者,訂閱topics並處理其釋出的訊息的過程叫做consumers。
Broker:快取代理,Kafa叢集中的一臺或多臺伺服器統稱為broker。
安裝執行環境
1.指定更目錄
cd /
2.建立目錄
mkdir www
cd /www
3.下載使用 kafka|zookeeper
kafka
wget downloads.apache.org/kafka/2.5.0/k...
zookeeper
wget apache.inspire.net.nz/zookeeper/zo...
4.解壓兩個包
tar zxvf kafka_2.12-2.5.0.tgz
tar zxvf apache-zookeeper-3.6.1-bin.tar.gz
mv apache-zookeeper-3.6.1-bin zookeeper
mv kafka_2.12-2.5.0.tgz kafka
5.配置zookeeper
cd zookeeper
mkdir data
cd conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
cd ../
cd data
vi myid (輸入1,儲存退出)對應zoo.cfg的配置檔案的中server.1
6.在zookeeper目錄下 啟動服務
./bin/zkServer.sh start
成功啟動如下
$ JMX enabled by default
$ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
$ Starting zookeeper … STARTED
7.切換到kafka目錄,配置服務端檔案
cd /www/kakfa
vi /config/server.properties
放開對外監聽地址
advertised.listeners=PLAINTEXT://192.168.10.10:9092
填寫zookeeper地址
zookeeper.connect=192.168.10.10:2181
8.啟動kafka(啟動成功自動註冊到zookeeper服務),成功返回pid
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
9.啟動服務端,檢視kakfa是否成功注入,zookeeper服務是否正常
./zkCli.sh -server 192.168.10.10:2181
出現以下,說明客戶端沒問題,可檢視zookeeper管理的專案目錄
[zk: localhost:2181(CONNECTED) 0]
擼程式碼(kafka-php 發現無法主動建立主題,未解決)
包地址裡,面有簡單的事例和使用說明
packagist.org/packages/nmred/kafka...
rdkafka參考文件
arnaud.le-blanc.net/php-rdkafka-do...
本作品採用《CC 協議》,轉載必須註明作者和本文連結