1. 程式人生 > >kafka 內部原理及例項

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 例項

  生產端程式碼

訊息端程式碼