舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產乙個雞蛋,消費者就消費乙個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(訊息堵塞,最終導致系統超時),消費者拒絕再吃了,」雞蛋「又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裡,消費者去籃子裡拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裡。
而這個籃子就是」訊息中介軟體「,顧名思義,首先是中介軟體,然後是用來儲存訊息的中介軟體。
這裡雞蛋其實就是「資料流」,系統之間的互動都是通過「資料流」來傳輸的(就是tcp、https什麼的),也稱為報文,也叫「訊息」。訊息佇列滿了,其實就是籃子滿了,」雞蛋「 放不下了,那趕緊多放幾個籃子,其實就是擴容。所以訊息中介軟體就是那個籃子。
因為對訊息中介軟體的定位原因,所以我們對它有著一定的要求,例如訊息的發布模型、容錯、高吞吐高效能、擴容、安全、資料不丟失等等。
訊息傳輸模型
點對點模型
發布/訂閱模型
選擇合適的訊息引擎
解耦這個是訊息中介軟體或者訊息系統比較基本的功能,可以解耦兩個系統或者多個系統之間的緊耦合關係
削峰填谷
分布式流**平台
其實如果將kafka定義為訊息中介軟體,其實是有失偏頗的,因為隨著kafka streams 的功能完善,kafka 本身已經具有了處理訊息的實時能力——實時流處理,而且支援dsl,所以在我們構建流處理平台的時候我們可以將其考慮進去
訊息kafka是訊息引擎,這裡的訊息就是kafka處理的主要物件,也是kafka 儲存的物件
主題 topic
主題就是承載訊息的邏輯容器,在實際應用中多用於區分具體業務
訊息位移offset
表示分割槽中每條訊息的位置資訊,是乙個單調遞增不變的值。
副本replica
kafka中一條訊息能夠被拷貝到多個地方以提供資料冗餘,這些地方就是所謂的副本。副本還分為領導者副本和追隨者副本,各自有不同的角色劃分。副本是在分割槽層級下的,即每個分割槽可配置多個副本實現高可用。
生產者producer
向主題發布新訊息的應用程式。
消費者 consumer
從主題訂閱新訊息的應用程式。
消費者位移:consumer offset
表示消費者消費進度,每個消費者都有自己的消費者位移。
消費者組:consumer group
多個消費者例項共同組成的乙個組,同時消費多個分割槽實現高吞吐。
重平衡:rebalance
消費者組內某個消費者例項掛掉後,其它消費者例項自動重新分配訂閱主題分割槽的過程。rebalance 是kafka消費者端實現高可用的重要手段
kafka入門系列二
在入門 系列一,我進行了單節點的安裝,本文我將安裝多節點的集群。在kafka中,乙個broker就是集群中的乙個節點,而我們在乙個kafka中可以啟動多個broker,所以一台機器,裝乙個kafka,通過啟動多個broker的形式,就可以建乙個集群。下面我一步步演示 1.配置多個broker,這個主...
Kafka系列文章之kafka環境搭建
現在最新的版本是2.1.1 將安裝包解壓到指定位置 3.1.修改kafka home config zookeeper.properties,將datadir 修改為自己的data資料夾 3.2.修改kafka home config server.properties,將datadir 修改為自己...
kafka入門系列1 kafka安裝前準備
提取碼 1dj7 在根目錄下建立tempfile資料夾,然後將zookeeper和kafka上傳到該目錄下並解壓 root localhost tempfile tar xvf zookeeper 3.4.7.tar.gz root localhost tempfile tar xvf kafka ...