Kafka 實戰 01 kafka 入門篇

2021-09-29 13:36:37 字數 3738 閱讀 9137

今天是11月12號,昨天雙11,乙個特殊的日子,昨天大家集體購物,此時產生了乙個問題,上億的人同時下單,各大電商是如何在此時處理上億的訂單呢?

當上億客戶下單,將產生大量的訂單(訊息),此時訂單已經寫入了資料庫,但是後台處理能力有限,不能及時處理上億級的訂單,於是後台告訴使用者乙個假象,你已經下單成功,但其實使用者的下單資訊被快取到了訊息佇列,後台再從訊息佇列中獲取訂單,對訂單進行處理 。——非同步通訊

kafka 是乙個分布式訊息發布訂閱系統,(訊息佇列mq)主要應用於 大資料實時處理領域。

1)kafka是乙個訊息佇列,佇列的特點是先進先出,可作為緩衝機制,解決生產速度大於消費速度的問題。

2)非同步處理機制:不立即處理訊息,什麼時候需要處理在進行處理

3)訊息備份,不會隨著部分系統掛掉而產生訊息丟失。

點對點模式,又叫 訊息佇列模型(乙個生產者,乙個消費者,消費者收到訊息後,訊息刪除)  只能有乙個生產者和乙個消費者。

發布/訂閱模式,有了主題(topic)的概念,這個模型可能存在多個發布者(publisher),多個發布者向相同的主題傳送訊息,而訂閱者(subscriber)也可能存在多個,它們都能接收到相同主題的訊息。生活中的報紙訂閱就是一種典型的發布 / 訂閱模型。

1)producer  : 發訊息的客戶端;向佇列尾推送訊息

2)consumer :消費訊息的客戶端;從隊首取訊息。

3)consumer group (cg):消費者組,由多個consumer組成。

乙個分割槽只能由乙個組內消費者消費;消費者組之間互不影響。

消費者組裡面的不同消費者不可以消費同乙個訊息,也就同乙個topic,消費者組提高了消費速率)

消費者組我們可以作為乙個大的消費群體(一家人),裡面的各個小的消費者不可能消費同乙個訊息,這樣效率太低。

好比乙個家庭裡面的成員採購物品,不能採購相同的物品一樣。

所以我們有乙個這樣的結論,乙個消費者組裡面的消費者個數不得多於主題的個數。

4)broker :一台kafka伺服器就是乙個broker。乙個集群由多個broker 組成。乙個broker

有多個topic。

5)topic :可以理解為乙個佇列,生產者和消費者面向同乙個 topic;

訊息佇列可能有很多訊息,但是不是每乙個訊息消費者都要去獲取,所以生產者生產訊息後,給訊息命名,

也就是主題名,消費者根據主題去拿自己的訊息。我們可以把主題當成乙個小的訊息佇列。

6)partition:乙個大的 topic 可以分布到多個 broker(即伺服器)上,

乙個 topic 可以分為多個 partition,每個 partition 是乙個有序的佇列。

7)replica:副本,為保證集群中的某個節點發生故障時,該節點上的 partition 資料不丟失。

且 kafka 仍然能夠繼續工作,kafka 提供了副本機制,乙個 topic 的每個分割槽都有若干個副本,乙個 leader 和若干個 follower。

8)leader:每個分割槽多個副本的「主」,生產者傳送資料的物件,以及消費者消費資料的物件都是leader。

9)follower:每個分割槽多個副本中的「從」,實時從leader中同步資料,保持和leader資料的同步。

leader 發生故障時,某個follower會成為新的follower。

三颱伺服器broker0 broker1 broker2 三颱伺服器,搭建了乙個kafka集群,且建立了乙個主題為topica訊息,對該訊息進行了兩次備份(leader 和 follower),且備份的分割槽不可能和被備份的在乙個伺服器上,這樣備份也就沒有意義了。備份主題需要不斷地同步產生的訊息。每個partition為乙個目錄,partiton命名規則為topic名稱+有序序號,第乙個partiton序號從0開始,序號最大值為partitions數量減1。

假如生產者生產訊息,同乙個主題的訊息被切分為三份,存入到不同的分割槽(疑問:分割槽存訊息是按照哪種規則去存的呢?),存入的訊息肯定是一致的,先生產誰,就先存入誰,但是消費者取出訊息則需要從不同的三個分割槽去取,那應該是先從哪個分割槽去取呢,所以存入訊息的順序是一致的,取出訊息的順序就可能不一致。後面部落格我們將持續分享kafka的生產分割槽側率,以及消費者的消費策略。

建立主題——建立乙個名為「first」 的topic 副本個數是2  分割槽數是1

刪除主題(需要 server.properties 中設定 delete.topic.enable=true 否則只是標記刪除)

bin/kafka-topics.sh --delete --zookeeper 192.168.60.72:2181 --topic first
檢視主題詳情

檢視當前伺服器topic

傳送訊息

bin/kafka-console-producer.sh --broker-list 192.168.60.72:9092 --topic first

this is a message

this is another message

接收訊息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.60.72:9092 --topic first --from-beginning

this is a message

this is another message

配置環境變數

[atguigu@hadoop102 module]$ sudo vi /etc/profile

#kafka_home

export kafka_home=/opt/module/kafka

export path=$path:$kafka_home/bin

檢視kafka程序

ps -ef | grep kafka

(01)kafka以及訊息系統的基本介紹

1 kafka簡介 apache kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,用作linkedin的活動流 activity stream 和運營資料處理管道 pipeline 的基礎。之後貢獻給apache 會成為apache的乙個頂級專案。kafka是一種快速 可擴充...

kafka入門實戰

kafka和其他的mq的最大的區別就是構建實時資料管道和stream資料流,和可以分布式,好容錯性的儲存訊息 1.安裝jdk,略 3.解壓 tar xzf kafka 2.11 2.1.0.tgz cd kafka 2.11 2.1.0 4.啟動zookeeper 因為kafka的啟動依賴於zook...

Kafka實戰 入門

經過乙個多月的時間觀察,業務上在整合kafka後,各方面還算穩定,這裡打算抽時間給大家分享一下kafka在實際場景中的一些使用心得。本篇部落格打算先給大家入個門,讓大家對kafka有個初步的了解,知道kafka是做什麼的,下面是本篇部落格的目錄內容 下面開始今天的部落格分享內容。kafka它本質上是...