✍️
ZiXiang-Blog
  • Jerry Wang Blog
  • 使用 TorchServe 部署 Model
  • How do AppRTC work in WebRTC mechanism ?
  • [系統設計]- 容易產生設計盲點
  • Golang
    • [Golang] Goroutine Concurrency多執行緒淺談
    • [Golang]: 進階用法
    • Golang go mod 入門
    • [Golang] 讓 Goroutine Debug 變得更簡單
  • Security
    • HTTP Token 使用方式: Basic Token v.s Bearer Token
    • 從 RFC 規格書觀點解析 OAuth 2.0
    • 區塊鏈物聯網架構 解決哪些安全性議題?
  • Broker
    • [深入淺出MQTT]: v3.1.1與v5 的差異
    • Broker 到底是什麼?
  • patterns
    • Patterns for Organizing Domain Logic
    • Domain Model: 從無到有規劃新的服務
    • 淺談CQRS
    • Backend System in Microservice Architecture: Where Does data store?
    • Ambassador pattern with Shared Database Pattern
    • Microservice Pattern 犧牲了什麼?
  • K8s
    • 分散式系統: 現代軟體架構與設計考量
    • Kubernetes 超入門
    • Kubernetes 架構
    • K8s 在 DevOps 中的作用
  • Database
    • Relation Database Index Overview
    • Draft: RDBMS(MySQL) v.s NoSQL (Monogo)
    • [淺談]- How Do RDBMS Thread work ?
    • [淺談]-NoSQL資料庫怎麼選?
    • How do pick the database more correctly?
    • Draft: 關聯式資料庫需要知道的幾件事
  • HTTP
    • Overview The WebSocket Mechanism
Powered by GitBook
On this page

Was this helpful?

  1. Broker

Broker 到底是什麼?

市面上 Broker 百百種,最有名的應該是message Queue,如MQTT、RabbitMQ、Kafka等。可是很少人知道Broker其實指軟體設計的架構。事實上很多時候在撰寫的軟體的時候也寫了Broker 只是不知道它是broker。

Previous[深入淺出MQTT]: v3.1.1與v5 的差異NextPatterns for Organizing Domain Logic

Last updated 4 years ago

Was this helpful?

根據POSA[1]一書中給的Borker的定義:

The Broker architectural pattern can be used to structure distributed software systems with decoupled components that interact by remote service invocations. A broker component Is responsible for coordinating communication, such as forwarding requests. as well as for transmitting results and exceptions.

Broker 其實就是一種專門設計用來傳遞、聯絡各component 的一種軟體架構。主要分成三個主體client、Broker、servers,有別於client-server架構,Client觸發服務實質上是透過Broker(中間人)。

Broker 誕生是為了應付一個持續增長的系統,然而為了維護性、安全性、彈性等原因才誕生出來的。而主要遇到的困難是:1. 系統內的component能夠互相的溝通、2.系統運行時,component可以動態地被調整(上架、下架)、3.對client端隱藏後端的service.

Broker 特性 hint: 紀錄client與server的狀態,並且對client隱藏server 所具有的服務

靜態視角(proxy可直接併入client、server ; Bridge可併入Broker ) 從Class diagram 來看Broker,大致上切分為三個角色,client、Broker、servers。彼此之間傳遞透過proxy,而broker 與其他broker則是透過bridge傳遞。

Broker architectural class diagram

動態視角(下圖將proxy合併進client、server) 首先Server 先將自己註冊進入Broker ,而Broker會將 service存取方式保留repo.中。

當Client透過proxy向Broker觸發某一個服務,Broker 再向Server取要結果後回傳給Client。

總結 市面上有很多種broker,而且有很多的變型。但總而言之,Broker 是用來幫忙client觸發服務的,並具有「紀錄client與server的狀態,且對client隱藏server 所具有的服務」的特性!。

參考資料 [1] Frank, Buschmann, et al. “Pattern-oriented software architecture: a system of patterns.” Wiley, ISBN 0 471.95889 (1996)

img