java
Kafka簡介
2017/12/18 15:28:31
0
223
Kafka簡介
簡介 |
Kafka可以說是目前大數據架構中的標準技術之一了,比如SMACK這個目前主流的大數據即時處理架構中的5個技術,Spark, Mesos, akka, Cassendra, Kafka,就包含在其中。這篇就簡單的帶大家了解一下Kafka是什麼。 |
作者 |
林夢衍 |
What is Kafka?
Kafka是由LinkedIn開發的一個分布式的Message System,由Scala實作,它具備有水平擴充和高吞吐量的能力,而隨著新版Stream功能的加入,將自已定位為一個分散式串流平台(distributed streaming platform),來提供實時資料串接(real-time pipeline)。
Kafka的特色
1 以Time Complexity O(1)的方式提供消息持久化能力,對TB級的資料持久化,也能保持高效
2 在一般商用機器上,也能達到每秒100k以上的訊息處理量
3 保證partition上的訊息順序
4 支援實時和離線資料處理
5 支援水平擴展,但只能加大,不能縮小
6 缺點是不支援JMS和事務
Kafka架構
名詞解釋
Broker
可以簡單的視為Kafka cluster中的機器設備,另外會使用ZooKeeper來進行資源的管理。
Topic
簡單的說訊息的發收和接收時需要指定的類別,可以視為是Queue的概念。
Partition
會將Topic上的訊息切割成多個Partition,為一個實際使用的空間。
Producer
負責發布訊息到Kafka。
Consumer
訊息消費者,將訊息由Kafka讀出,要注意的是一個Partition只能被一個Consumer讀取,所以比較好的設計是將Partition的數量設得比Consumer多。
Consumer Group
每個Consumer屬於一個特別的Consumer Group。
Leader and Follower
Leader是該Partition的資料讀寫最優先者。
而Follower會同步Leader的資料,當作是備援,來達到高可用性 。
Kafka環境建置
1 下載Kafka最新版本,並解壓縮
tar -xzf kafka_2.11-1.0.0.tgz
cd kafka_2.11-1.0.0
2 啟動Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
3 啟動Kafka
bin/kafka-server-start.sh config/server.properties
4 建立和查詢Topic test
新增Topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查詢Topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
5 傳送和接收訊息
傳送訊息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
接收訊息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Kafka程式實作
Producer
第10-18行,主要就是設定Produce的properties,第20行,建立Kafka Producer,第21-22行,發送100則訊息到指定的topic,produce是thread safe的,因此,在實際開發時,使用單一個instance也比較有效率,第24行為關閉producer。
Consumer
第10-16行,設定properties,第17行,建立Kafka Consumer,第19-23行,為不斷的接收訊息並將其印出,第20行,為取得資料並等待100 ms。