分布式訊息中介軟體 kafka

2021-09-04 04:35:59 字數 2128 閱讀 4089

在我們大量使用分布式資料庫、分布式計算集群的時候,是否會遇到這樣的一些問題:

l  我想分析一下使用者行為(pageviews),以便我能設計出更好的廣告位

l  有些資料,我覺得存資料庫浪費,直接存硬碟又怕到時候操作效率低。

這個時候,我們就可以用到分布式訊息系統了。雖然上面的描述更偏向於乙個日誌系統,但確實kafka在實際應用中被大量的用於日誌系統。

首先我們要明白什麼是訊息系統,在kafka官網上對kafka的定義叫:a distributed publish-subscribe messaging system。publish-subscribe是發布和訂閱的意思,所以更準確的說kafka是乙個訊息訂閱和發布的系統。publish-subscribe這個概念很重要,因為kafka的設計理念就可以從這裡說起。

我們將訊息的發布(publish)暫時稱作producer,將訊息的訂閱(subscribe)表述為consumer,將中間的儲存陣列稱作broker,這樣我們就可以大致描繪出這樣乙個場面:

生產者(藍色,藍領麼,總是辛苦點兒)將資料生產出來,丟給broker進行儲存,消費者需要消費資料了,就從broker中去拿出資料來,然後完成一系列對資料的處理。

乍一看這也太簡單了,不是說了它是分布式麼,難道把producer、broker和consumer放在三颱不同的機器上就算是分布式了麼。我們看kafka官方給出的圖:

多個broker協同合作,producer和consumer部署在各個業務邏輯中被頻繁的呼叫,三者通過zookeeper管理協調請求和**。這樣乙個高效能的分布式訊息發布與訂閱系統就完成了。圖上有個細節需要注意,producer到broker的過程是push,也就是有資料就推送到broker,而consumer到broker的過程是pull,是通過consumer主動去拉資料的,而不是broker把資料主動傳送到consumer端的。

這樣乙個系統到底**體現出了它的高效能,如官網上所述,翻譯如下:

(1)資料在磁碟上訪問代價為o(1)。一般資料在磁碟上是使用btree儲存的,訪問代價為o(lgn)。

(2)高吞吐率。即使在普通的節點上每秒鐘也能處理成百上千的message。

(3)顯式分布式,即所有的producer、broker和consumer都會有多個,均為分布式的。

(4)支援資料並行載入到hadoop中。

等等至此你應該對kafka是乙個什麼樣的系統有所體會,並能了解他的基本結構,還有就是他能用來做什麼。那麼接下來,我們再回到producer、consumer、broker以及zookeeper這四者的關係中來。

我們看上面的圖,我們把broker的數量減少,只有一台。現在假設我們按照上圖進行部署:

l  server-1 broker其實就是kafka的server,因為producer和consumer都要去連它。broker主要還是做儲存用。

l  server-2是zookeeper的server端,zookeeper的具體作用你可以去官網查,在這裡你可以先想象,它維持了一張表,記錄了各個節點的ip、埠等資訊(以後還會講到,它裡面還存了kafka的相關資訊)。

l  server-3、4、5他們的共同之處就是都配置了zkclient,更明確的說,就是執行前必須配置zookeeper的位址,道理也很簡單,這之間的連線都是需要zookeeper來進行分發的。

l  server-1和server-2的關係,他們可以放在一台機器上,也可以分開放,zookeeper也可以配集群。目的是防止某一台掛了。

簡單說下整個系統執行的順序:

1.         啟動zookeeper的server

2.         啟動kafka的server

3.         producer如果生產了資料,會先通過zookeeper找到broker,然後將資料存放進broker

4.         consumer如果要消費資料,會先通過zookeeper找對應的broker,然後消費。

分布式訊息中介軟體 kafka

在我們大量使用分布式資料庫 分布式計算集群的時候,是否會遇到這樣的一些問題 這個時候,我們就可以用到分布式訊息系統了。雖然上面的描述更偏向於乙個日誌系統,但確實kafka在實際應用中被大量的用於日誌系統。首先我們要明白什麼是訊息系統,在kafka官網上對kafka的定義叫 a distributed...

分布式訊息中介軟體

一 分布式訊息中介軟體入門 訊息中介軟體主要實現分布式系統中解耦 非同步訊息 流量銷鋒 日誌處理等場景。現在生產中用得最多的訊息佇列有 activemq,rabbitmq,kafka,rocketmq 等。jms 規範 類似於 jdbc 的一套介面規範,但不同的是他是面向的訊息服務,提供一套標準 a...

分布式之訊息中介軟體

目錄 1.訊息中介軟體概述 2.訊息中介軟體使用場景 3.訊息中介軟體原理 4.訊息中介軟體傳遞模式 4.1點對點模式 ptp 4.2發布 訂閱模型 pub sub 訊息中介軟體利用高效可靠的訊息傳遞機制進行平台無關的資料交流,並基於資料通訊來進行分布式系統的整合。通過提供訊息傳遞和訊息排隊模型,它...