apache kafka_Apache Kafka简介
apache kafka
什么是Apache Kafka?
Apache Kafka是一個分布式流系統,具有發布和訂閱記錄流的功能。 在另一方面,它是企業消息傳遞系統。 它是一個快速,水平可擴展和容錯的系統。 Kafka有四個核心API,
生產者API:
該API允許客戶端連接到集群中運行的Kafka服務器,并將記錄流發布到一個或多個Kafka主題。
使用者API:
該API允許客戶端連接到集群中運行的Kafka服務器,并使用來自一個或多個Kafka主題的記錄流。 卡夫卡的消費者是直接從卡夫卡主題的消息。
流API:
通過使用來自一個或多個主題的流并將這些流生成到其他輸出主題,此API允許客戶端充當流處理器。 這允許轉換輸入和輸出流。
連接器API:
該API允許編寫可重用的生產者和使用者代碼。 例如,如果我們要從任何RDBMS讀取數據以將數據發布到主題,并使用主題中的數據并將其寫入RDBMS。 使用連接器API,我們可以為各種數據源創建可重用的源連接器和接收器連接器組件。
Kafka用于什么用例?
Kafka用于以下用例,
訊息系統:
Kafka用作企業消息傳遞系統,用于分離源系統和目標系統以交換數據。 與JMS相比,Kafka具有分區的高吞吐量和具有復制功能的容錯能力。
網絡活動跟蹤:
跟蹤網站上的用戶旅程事件,以進行分析和脫機數據處理。
日志匯總:
處理來自各種系統的日志。 尤其是在具有微服務架構的分布式環境中,該系統將系統部署在各種主機上。 我們需要匯總來自各種系統的日志,并在中央位置提供日志以進行分析。 瀏覽有關使用Kafka的分布式日志記錄體系結構的文章https://smarttechie.org/2017/07/31/distributed-logging-architecture-for-micro-services/
指標收集器:
Kafka用于從各種系統和網絡收集指標以進行操作監視。 Kafka指標報告器可用于監控工具,例如Ganglia , Graphite等…
關于此https://github.com/stealthly/metrics-kafka的一些參考
什么是經紀人?
Kafka群集中的一個實例稱為代理。 在Kafka群集中,如果您連接到任何一個代理,您將可以訪問整個群集。 我們連接到訪問群集的代理實例也稱為引導服務器。 每個代理由集群中的數字ID標識。 首先從Kafka集群開始,三個經紀人是一個不錯的選擇。 但是有些集群中有數百個經紀人。
什么是主題?
主題是將記錄發布到的邏輯名稱。 在內部,該主題分為多個發布數據的分區。 這些分區分布在群集中的代理之間。 例如,如果一個主題有三個分區,群集中有3個代理,則每個代理都有一個分區。 要發布的分區數據僅附加偏移量增量。
以下是在使用分區時需要記住的幾點。
- 主題由其名稱標識。 一個集群中可以有很多主題。
- 消息的順序保持在分區級別,而不是跨主題。
- 一旦寫入分區的數據不被覆蓋。 這稱為不變性。
- 分區中的消息與鍵,值和時間戳一起存儲。 Kafka確保將給定密鑰的消息發布到同一分區。
- 在Kafka群集中,每個分區都有一個領導者,該領導者將對該分區進行讀/寫操作。
在上面的示例中,我創建了一個主題,其中包含三個具有復制因子3的分區。在這種情況下,因為集群具有3個代理,所以這三個分區是均勻分布的,每個分區的副本都復制到另外2個代理中。 由于復制因子為3,因此即使有2個代理發生故障,也不會丟失數據。 始終保持復制因子大于1且小于或等于集群中的代理數目。 創建主題的復制因子不能超過集群中代理的數量。
在上圖中,每個分區都有一個領導者(發光分區),其他同步副本(灰色分區)是跟隨者。 對于分區0,broker-1是領導者,broker-2,broker-3是跟隨者。 對分區0的所有讀/寫都將轉到Broker-1,并且相同的內容將被復制到Broker-2和Broker-3。
現在,讓我們按照以下步驟創建具有3個代理的Kafka集群。
第1步:
下載Apache Kafka最新版本。 在此示例中,我使用的是最新的1.0。 解壓縮文件夾并移到bin文件夾。 啟動Zookeeper,這對于從Kafka集群開始至關重要。 Zookeeper是協調服務,用于管理代理,對分區的領導者進行選舉并在主題更改(刪除主題,創建主題等)或代理(添加代理,代理模具等)更改期間向Kafka發出警報。 在此示例中,我僅啟動了一個Zookeeper實例。 在生產環境中,我們應該有更多的Zookeeper實例來管理故障轉移。 如果沒有Zookeeper,Kafka群集將無法工作。
./zookeeper-server-start.sh ../config/zookeeper.properties第2步:
現在啟動卡夫卡經紀人。 在此示例中,我們將啟動三個經紀人。 轉到Kafka根目錄下的config文件夾,并將server.properties文件復制3次,并將其命名為server_1.properties,server_2.properties和server_3.properties。 在這些文件中更改以下屬性。
#####server_1.properties##### broker.id=1 listeners=PLAINTEXT://:9091 log.dirs=/tmp/kafka-logs-1#####server_2.properties###### broker.id=2 listeners=PLAINTEXT://:9092 log.dirs=/tmp/kafka-logs-2######server_3.properties##### broker.id=3 listeners=PLAINTEXT://:9093 log.dirs=/tmp/kafka-logs-3M現在,使用以下命令運行3個代理。
###Start Broker 1 ####### ./kafka-server-start.sh ../config/server_1.properties###Start Broker 2 ####### ./kafka-server-start.sh ../config/server_2.properties###Start Broker 3 ####### ./kafka-server-start.sh ../config/server_3.properties第三步:
使用以下命令創建主題。
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic first_topic第4步:
通過使用Kafka控制臺生產者,為上一步中創建的主題生成一些消息。 對于控制臺生產商,請提及任何中間商地址。 這將是引導服務器,用于訪問整個群集。
./kafka-console-producer.sh --broker-list localhost:9091 --topic first_topic >First message >Second message >Third message >Fourth message >步驟5:
使用Kafka控制臺使用者使用消息。 對于Kafka消費者,請提及任何一個代理地址作為引導服務器。 請記住,在閱讀消息時,您可能看不到命令??。 由于順序是在分區級別而不是主題級別維護的。
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first_topic --from-beginning如果需要,可以使用以下命令描述該主題以查看分區的分布方式以及每個分區的領導者。
./kafka-topics.sh --describe --zookeeper localhost:2181 --topic first_topic#### The Result for the above command##### Topic:first_topic PartitionCount:3 ReplicationFactor:3 Configs:Topic: first_topic Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3Topic: first_topic Partition: 1 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1Topic: first_topic Partition: 2 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2在上面的描述中,broker-1是分區:0的領導者,broker-1,broker-2和broker-3具有每個分區的副本。
在下一篇文章中,我們將看到生產者和消費者JAVA API。 直到那時, 快樂消息!!!
翻譯自: https://www.javacodegeeks.com/2017/11/introduction-apache-kafka.html
apache kafka
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的apache kafka_Apache Kafka简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拯救者设置截图快捷键(拯救者快捷按键)
- 下一篇: rest资源设计_REST资源何时应获得