kafka 內部原理及例項
kafka介紹
Kakfa起初是由LinkedIn公司開發的一個分散式的訊息系統,它使用Scala編寫,後成為Apache的一部分,支援多種客戶端語言(C++,JAVA,python)
目前越來越多的開源分散式處理系統如Cloudera、Apache Storm、Spark等都支援與Kafka整合。
具有高水平擴充套件性、高容錯性、訪問速度快、分散式等特性
內部原理深度解析
1.producer: 生產者釋出訊息到 kafka 叢集。生產者根據指定演算法將訊息傳送到partition中 2.consumer:消費者從 kafka 叢集中消費訊息。kafka中跟別的訊息佇列不一樣的是consumer端記錄offset(偏移量) 3.broker: 每一個broker可以理解為kafka 叢集中一臺伺服器。 4.topic: kafka 叢集的訊息類別,即 kafka 是面向 topic 的。 5.partition: 每個 topic 包含一個或多個 partition。 Partition都是有序的,每個個consumer以partition為單位進行消費的。 6.Consumer group:每個 consumer 都屬於一個 consumer group,在同一個 consumer group 中的一個 Consumer 不能消費同一個partition,但不同consumer group Consumer 還是可以消費同一個partition7.replica: partition 的副本,保障 partition 的高可用。 8.leader: replica 中的一個角色, producer 和 consumer 只跟 leader 互動。 9.follower: replica 中的一個角色,從 leader 中複製資料。10.zookeeper: kafka 通過 zookeeper 管理元資料(meta) 資訊,叢集管理,Leader 選舉
常用命令
./bin/zookeeper-server-start.sh ./config/zookeeper.properties & // 起動kafka 之前要先啟動zookeeper./bin/kafka-server-start.sh ./config/server.properties & //起動kafka./bin/kafka-server-stop.sh 停掉kafka./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topicname 建立tipoc replication-factor:指有同個備份./bin/kafka-topics.sh --list --zookeeper localhost:2181 檢視tipic./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicnametest 生產端生產訊息./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic topicnametest --from-beginning 消費者訊息訊息,從頭消費
kafka 例項
生產端程式碼
訊息端程式碼