第二章:Kafka 一個發佈與訂閱消息系統(概念篇)

作者:pany

時間:2019-3-3 21:36

參考:Kafka 權威指南(Kafka :The Definitive Guide)

注:如果網上找不到這本書的資源,可以聯繫我,免費分享。微信:py1149050048

@all 轉載請註明出處

章節概要

本文主要講解Kafka的誕生背景和解決了什麼問題,主要章節如下:

           1、發佈與訂閱消息模式

           2、爲什麼我們需要使用發佈與訂閱系統

一、發佈與訂閱消息系統

首先正式去介紹Kafka之前,我們先來介紹下發布與訂閱消息系統,因爲Kafka就是一個基於發佈和訂閱消息系統。

而在說道發佈和訂閱消息模式時,我們又不得不提JMS(Java Message Service),它是SUN提出的目的是統一各種MOM(Message-Oriented Middleware)系統接口的規範,它包含以下兩種消息模式,我們這裏針對JMS不做深入的擴展,我們針對兩種模式做一個簡單的對比:


* 點對點模式(Point to Point):

該模式是一個基於隊列的模式,有生產者、隊列和消費者幾種角色,生產者發送一條消息到隊列,這條消息只能被一個消費者消費。

* 發佈和訂閱消息模式(Publish and Subscribe Message)

該模式是一個基於主題的模式,有生產者、主題、消費者等角色,生產者傳遞一條消息,該消息被放置在指定主題的分區裏,該主題可以被多個消費者訂閱。

二、爲什麼我們需要使用發佈訂閱系統

在項目建立的初期,我們多數場景下爲了快速的響應需求,模塊之間都是直連。主要是追求簡單、快速,如下圖:

但是隨着業務逐漸的擴展,我們的系統不得不做橫向擴展,我們得新增很多模塊,模塊之間會建立很多連接,如下圖:


系統之間節點連接一團糟,此時我們不得不爲之前埋下的坑買單,我們得花大量時間梳理連接關係,一但某個系統做了升級,我們被迫得把所有的節點都測試一遍,耦合這麼強的系統,可能維護一天你都會崩潰。

互聯網的世界問題總是不斷的,但是沒關係,開源的世界最不缺的就是解決方法,只要你肯去學習,肯去查詢,總有解決你問題的方案。於是我們找到了發佈訂閱消息系統,我們基於發佈訂閱消息系統對系統進行整改,如下:

梳理後的系統是不是簡單明瞭,即使我們後期有更多更復雜的擴展,我們還可以增加發布與訂閱系統。這樣的系統纔可以跟隨這個公司一起成長一起富強。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章