什麼是kafka
Apache kafka是消息中間件的一種,我發現很多人不知道消息中間件是什麼,在開始學習之前,我這邊就先簡單的解釋一下什麼是消息中間件,只是粗略的講解,目前kafka已經可以做更多的事情。
以下例子來自互聯網
舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,”雞蛋“又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裏,消費者去籃子裏拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裏,而這個籃子就是”kafka“。
雞蛋其實就是“數據流”,系統之間的交互都是通過“數據流”來傳輸的(就是tcp、http什麼的),也稱爲報文,也叫“消息”。
消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。
各位現在知道kafka是幹什麼的了吧,它就是那個"籃子"。
kafka名詞解釋 producer:生產者,就是它來生產“雞蛋”的。
consumer:消費者,生出的“雞蛋”它來消費。
topic:你把它理解爲標籤,生產者每生產出來一個雞蛋就貼上一個標籤(topic),消費者可不是誰生產的“雞蛋”都吃的,這樣不同的生產者生產出來的“雞蛋”,消費者就可以選擇性的“吃”了。
broker:就是籃子了
單機kafka配置
步驟一:
解壓kafka的tar包,然後cd進該目錄,做步驟二和步驟三
tar xzvf kafka_2.11-0.11.0.0.tgz
步驟二:
啓動Zookeeper server
bin/zookeeper-server-start.sh config/zookeeper.properties &
步驟三:
啓動Kafka server
bin/kafka-server-start.sh config/server.properties &
步驟四:
如果要殺死kafka進程,建議用ps找到進程號,用kill -9 去殺。因爲有些linux的版本用kafka內置命令去關進程,會關不掉。
步驟五:
開兩個ssh,一個用來發數據,一個用來收數據
運行producer—生產者,及發送送數據,本地自己測試用localhost:9092,topic是test
[root@localhost kafka_2.11-0.11.0.0]#bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>
>
>
>test # 輸入一個test
運行consumer—消費者,及接收數據,–from-beginning
[root@localhost kafka_2.11-0.11.0.0]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
test # 作爲消費者看到test 上述測試就算成功
實際部署測試
拓撲圖:
produce ------ kafka ------ consumer
測試kafka ip : 172.16.4.225 , topic:test
修改kafka的配置文件,最終配置成如下圖:
啓動Zookeeper server和Kafka server
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &
運行生產者
bin/kafka-console-producer.sh --broker-list 172.16.4.225:9092 --topic test
>
>hello
運行消費者
bin/kafka-console-consumer.sh --zookeeper 172.16.4.225:2181 --topic test --from-beginning
hello