Distributed Message Systems
整理 分散式通訊系統 (Distributed Message Systems)
相關的基本概念,包含名詞定義、常用情境、實作技術、架構樣式、以及參考資料。
名詞
Message Queue
:只處理基本的訊息儲存 (Holding)、轉送 (Passing)、傳遞 (Delivering)Task Queue
orJob Queue
:管理儲存工作的狀態,包含不同種類的 Message QueueMessage Broker
: 訊息協調器、訊息中介者Pub/Sub
: Publisher 和 Subscriber 的縮寫,基本的概念可以說是 Design Pattern 的 觀察者模式 (Observer Pattern)。整個運作的機制可以非同步、同步;可以是一對多、多對多。- 通訊協議 (Protocol)
MQTT
: 全名 Message Queueing Telemetry Transport,是 IBM 發明的通訊協議,一開始用途在有限頻寬之下、輕量、可靠的傳輸。現在已經因為互聯網的發展,用途已經不只是當初設計的目的,更多是應用在 IoT 上。更多參閱 MQTT教學(一):認識MQTTAMQP
:全名 Advanced Message Queuing Protocol,是個通訊協議。協議中定義了 Message、Producer、Consumer、Virtual Host、Exchange、Queue … 等。
CQRS
:全名是Command Query Responsibility Segregation
,主要是命令和查詢責任隔離,可從寫入作業分隔讀取作業。在 Microservice 中是很實用的架構。
實作
整理一些常見且流行的實作:
- Message Queue
- Task Queue / Job Queue
- beanstalkd
- Resque
- IronWorker
- Celery
Task Queue 的應用:我在實作 分散式測試架構 時,就是在實作 Task Queue 的架構。
團隊裡的 Message System 是什麼?
簡單講就是 Issue Tracking System,所有的事情都要集中到這裡,這裡是個 Queue
、Working in Process (WIP)
、企業的 小數據
,成就決策的 大數據
… 這個系統是內部溝通協作的 Message 系統。
底下這張圖是在討論 Issue Tracking、溝通成本 時會提的概念,也就是組織裡的訊息一致性的問題,如果沒有好的 Queue System 作為 Bufferring,那麼四散的訊息,各式各樣的溝通工具,最後會造成資訊紊亂、決策沒有依據,最後就是類似於 腦裂問題 (brain-split)
。
再任意地方我都可以驗證
康威定律
…
延伸閱讀
分散式系統系列文章
- 聊聊分散式系統
- 分散式一致性問題與共識演算法
- CAP Theorem
- Distributed Message Systems
- Eventually Consistent 與 Dynamo NWR 模型
- 淺談分散式交易
- Design Patterns for Distributed Systems
- 分散式系統設計 - 正體中文版翻譯記事
站內文章
參考資料
書籍
網站文章
- Queues: 整理 Job Queue, Message Queue 的實作
- MQTT教學(一):認識MQTT
- 發佈/訂閱模式 vs 觀察者模式
- Modern Messaging for Distributed Sytems
- 消息队列常见的 5 个应用场景