導航:首頁 > 使用方法 > phpkafka使用方法

phpkafka使用方法

發布時間:2022-12-14 18:39:17

❶ 3分鍾帶你徹底搞懂 Kafka

Kafka到底是個啥?用來幹嘛的?

官方定義如下:

翻譯過來,大致的意思就是,這是一個實時數據處理系統,可以橫向擴展,並高可靠!

實時數據處理 ,從名字上看,很好理解,就是將數據進行實時處理,在現在流行的微服務開發中,最常用實時數據處理平台有 RabbitMQ、RocketMQ 等消息中間件。

這些中間件,最大的特點主要有兩個:

在早期的 web 應用程序開發中,當請求量突然上來了時候,我們會將要處理的數據推送到一個隊列通道中,然後另起一個線程來不斷輪訓拉取隊列中的數據,從而加快程序的運行效率。

但是隨著請求量不斷的增大,並且隊列通道的數據一致處於高負載,在這種情況下,應用程序的內存佔用率會非常高,稍有不慎,會出現內存不足,造成程序內存溢出,從而導致服務不可用。

隨著業務量的不斷擴張,在一個應用程序內,使用這種模式已然無法滿足需求,因此之後,就誕生了各種消息中間件,例如 ActiveMQ、RabbitMQ、RocketMQ等中間件。

採用這種模型,本質就是將要推送的數據,不在存放在當前應用程序的內存中,而是將數據存放到另一個專門負責數據處理的應用程序中,從而實現服務解耦。

消息中間件 :主要的職責就是保證能接受到消息,並將消息存儲到磁碟,即使其他服務都掛了,數據也不會丟失,同時還可以對數據消費情況做好監控工作。

應用程序 :只需要將消息推送到消息中間件,然後啟用一個線程來不斷從消息中間件中拉取數據,進行消費確認即可!

引入消息中間件之後,整個服務開發會變得更加簡單,各負其責。

Kafka 本質其實也是消息中間件的一種,Kafka 出自於 LinkedIn 公司,與 2010 年開源到 github。

LinkedIn 的開發團隊,為了解決數據管道問題,起初採用了 ActiveMQ 來進行數據交換,大約是在 2010 年前後,那時的 ActiveMQ 還遠遠無法滿足 LinkedIn 對數據傳遞系統的要求,經常由於各種缺陷而導致消息阻塞或者服務無法正常訪問,為了能夠解決這個問題,LinkedIn 決定研發自己的消息傳遞系統, Kafka 由此誕生

在 LinkedIn 公司,Kafka 可以有效地處理每天數十億條消息的指標和用戶活動跟蹤,其強大的處理能力,已經被業界所認可,並成為大數據流水線的首選技術。

先來看一張圖, 下面這張圖就是 kafka 生產與消費的核心架構模型

如果你看不懂這些概念沒關系,我會帶著大家一起梳理一遍!

簡而言之,kafka 本質就是一個消息系統,與大多數的消息系統一樣,主要的特點如下:

與 ActiveMQ、RabbitMQ、RocketMQ 不同的地方在於,它有一個**分區 Partition **的概念。

這個分區的意思就是說,如果你創建的 topic 有5個分區,當你一次性向 kafka 中推 1000 條數據時,這 1000 條數據默認會分配到 5 個分區中,其中每個分區存儲 200 條數據。

這樣做的目的,就是方便消費者從不同的分區拉取數據,假如你啟動 5 個線程同時拉取數據,每個線程拉取一個分區,消費速度會非常非常快!

這是 kafka 與其他的消息系統最大的不同!

和其他的中間件一樣,kafka 每次發送數據都是向 Leader 分區發送數據,並順序寫入到磁碟,然後 Leader 分區會將數據同步到各個從分區 Follower ,即使主分區掛了,也不會影響服務的正常運行。

那 kafka 是如何將數據寫入到對應的分區呢?kafka中有以下幾個原則:

與生產者一樣,消費者主動的去kafka集群拉取消息時,也是從 Leader 分區去拉取數據。

這里我們需要重點了解一個名詞: 消費組

考慮到多個消費者的場景,kafka 在設計的時候,可以由多個消費者組成一個消費組,同一個消費組者的消費者可以消費同一個 topic 下不同分區的數據,同一個分區只會被一個消費組內的某個消費者所消費,防止出現重復消費的問題!

但是不同的組,可以消費同一個分區的數據!

你可以這樣理解,一個消費組就是一個客戶端,一個客戶端可以由很多個消費者組成,以便加快消息的消費能力。

但是,如果一個組下的消費者數量大於分區數量,就會出現很多的消費者閑置。

如果分區數量大於一個組下的消費者數量,會出現一個消費者負責多個分區的消費,會出現消費性能不均衡的情況。

因此,在實際的應用中,建議消費者組的 consumer 的數量與 partition 的數量保持一致!

光說理論可沒用,下面我們就以 centos7 為例,介紹一下 kafka 的安裝和使用。

kafka 需要 zookeeper 來保存服務實例的元信息,因此在安裝 kafka 之前,我們需要先安裝 zookeeper。

zookeeper 安裝環境依賴於 jdk,因此我們需要事先安裝 jdk

下載zookeeper,並解壓文件包

創建數據、日誌目錄

配置zookeeper

重新配置 dataDir 和 dataLogDir 的存儲路徑

最後,啟動 Zookeeper 服務

到官網 http://kafka.apache.org/downloads.html 下載想要的版本,我這里下載是最新穩定版 2.8.0 。

按需修改配置文件 server.properties (可選)

server.properties 文件內容如下:

其中有四個重要的參數:

可根據自己需求修改對應的配置!

啟動 kafka 服務

創建一個名為 testTopic 的主題,它只包含一個分區,只有一個副本:

運行 list topic 命令,可以看到該主題。

輸出內容:

Kafka 附帶一個命令行客戶端,它將從文件或標准輸入中獲取輸入,並將其作為消息發送到 Kafka 集群。默認情況下,每行將作為單獨的消息發送。

運行生產者,然後在控制台中鍵入一些消息以發送到伺服器。

輸入兩條內容並回車:

Kafka 還有一個命令行使用者,它會將消息轉儲到標准輸出。

輸出結果如下:

本文主要圍繞 kafka 的架構模型和安裝環境做了一些初步的介紹,難免會有理解不對的地方,歡迎網友批評、吐槽。

由於篇幅原因,會在下期文章中詳細介紹 java 環境下 kafka 應用場景!

閱讀全文

與phpkafka使用方法相關的資料

熱點內容
中式棉襖製作方法圖片 瀏覽:63
五菱p1171故障碼解決方法 瀏覽:858
男士修護膏使用方法 瀏覽:546
電腦圖標修改方法 瀏覽:607
濕氣怎麼用科學的方法解釋 瀏覽:537
910除以26的簡便計算方法 瀏覽:805
吹東契奇最簡單的方法 瀏覽:704
對腎臟有好處的食用方法 瀏覽:98
電腦四線程內存設置方法 瀏覽:512
數字電路通常用哪三種方法分析 瀏覽:13
實訓課程的教學方法是什麼 瀏覽:525
苯甲醇乙醚鑒別方法 瀏覽:82
蘋果手機微信視頻聲音小解決方法 瀏覽:700
控制箱的連接方法 瀏覽:75
用什麼簡單的方法可以去痘 瀏覽:789
快速去除甲醛的小方法你知道幾個 瀏覽:803
自行車架尺寸測量方法 瀏覽:124
石磨子的製作方法視頻 瀏覽:152
行善修心的正確方法 瀏覽:403
土豆燉雞湯的正確方法和步驟 瀏覽:276