kafka在大資料技術生態當中,以作為訊息系統而聞名,面對活躍的流式資料,提供高吞吐量的服務,在實時大資料處理場景下,可以說是一大利器,國內外大廠都有應用。今天的大資料開發分享,我們就主要來講講kafka框架的工作原理。
官方定義,kakfa是乙個分布式的基於發布/訂閱模式的訊息佇列,主要應用於大資料的實時處理領域。
通常來說,訊息佇列的模式分為兩種:
①點對點模式:訊息生產者傳送訊息到訊息佇列中,然後訊息消費者從佇列中取出並且消費訊息,訊息被消費後,佇列中不在儲存。
②發布/訂閱模式(一對多,消費者消費資料之後不會清除訊息):訊息生產者將訊息發布到topic中,同時有多個訊息消費者(訂閱)消費該訊息。
kafka就是典型的發布/訂閱模式,更加適用於實時大資料場景下的訊息服務。
kafka的基礎架構主要有broker、生產者、消費者組構成,當前還包括zookeeper。
生產者負責傳送訊息,broker負責緩衝訊息,broker中可以建立topic,每個topic又有partition和replication的概念。
消費者組負責處理訊息,同乙個消費者組的消費者不能消費同乙個partition中的資料。
消費者組主要是提高消費能力,比如之前是乙個消費者消費100條資料,現在是2個消費者消費100條資料,可以提高消費能力。
所以消費者組的消費者的個數要小於partition的個數,不然就會有消費者沒有partition可以消費,造成資源的浪費。
注意:不同消費者組的消費者是可以消費相同的partition資料。
kakfa如果要元件集群,則只需要註冊到乙個zookeeper中就可以了,zookeeper中還保留訊息消費的進度或者說偏移量或者消費位置:
0.9之前的版本偏移量儲存在zookeeper。
0.9之後的版本偏移量儲存在kafka中。kafka定義了乙個系統topic,專用用來儲存偏移量的資料。這樣做主要是考慮到頻繁更改偏移量,對zookeeper的壓力較大,而且kafka本身自己的處理也較複雜。
kafka不能保證訊息的全域性有序,只能保證訊息在partition內有序,因為消費者消費訊息是在不同的partition中隨機的。
kafka中的訊息是以topic進行分類的,生產者生成訊息、消費者消費訊息都面向topic。
topic是乙個邏輯上的概念,而partition是物理上的概念。每個partition又有副本的概念。
每個partition對應於乙個log檔案,該log檔案中儲存的就是生產者生成的資料,生產者生成的資料會不斷的追加到該log的檔案末端。
kafka的offset是分區內有序的,但是在不同分割槽中是無順序的,kafka不保證資料的全域性有序。
關於大資料開發,kafka工作原理入門,以上就為大家做了簡單的介紹了。kafka在大資料技術生態當中,普及度是非常高的,尤其是擁有豐富資料資源的企業,更加青睞於使用kafka。
大資料(Kafka) 原理
在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調 kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic...
大資料開發之kafka安裝
安裝kafka前需要安裝zookeeper,參考 二 解壓安裝包 root hlh001 software tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 三 修改解壓後的名稱 root hlh001 module mv kafka 2.11 0.11.0...
kafka工作原理介紹
中間的kafka cluster,儲存訊息,是由多個server組成的集群。2 topic與訊息 kafka將所有訊息組織成多個topic的形式儲存,而每個topic又可以拆分成多個partition,每個partition又由乙個乙個訊息組成。每個訊息都被標識了乙個遞增序列號代表其進來的先後順序,...