在做 System Design 時,可以有幾個階段來協助思考,分別是:

  • 釐清探索需求 Requirement,其中有還有分功能需求 和 非功能需求
  • 架構 High-Level Architecture Design
  • Detail Deep dive

除了以上事情之外,定義出「什麼不在討論範圍內 (out of scope)」也是非常重要的,可以展示出「排定優先順序的能力」。雖然 System Design 範圍很大,但其實也是有不少模板和套路可以練習。可以多看看各式各樣系統的 high-level 設計,順便把其中自己不熟悉的知識補上。

Continue reading

之前有介紹了 Message Queue 和其常見協定 MQTT 、 AMQP ,而 RabbitMQ 就是一款基於 AMQP 訊息傳遞協定實現的輕量級開源服務,由 Erlang 語言開發,能夠跨進程的傳遞訊息,且對多數主流程式語言如 Python、Java 等都有官方或社群開發 lib。

再來為了方便運維與監控,RabbitMQ 有內建一套 Web 介面,使用者可透過此介面管理檢視 queue 健康狀態,還可以處理使用者權限等操作

Continue reading

為了要把系統架構解耦,改為異步分散式處理,有時會決定使用 Message Queue 的設計來達成目標,其指的是應用程序之間通過在 Message Service 而不是直接調用彼此通訊。對於其落地的產品,常見的開源工具有 Kafka、RabbitMQ 等等或者雲端服務 GCP-Pub/Sub 和 AWS-SQS 等等。作為兩個子系統之間的通信中間層,會需要依靠協定保持有序且有效率的方式實現資訊交換,而目前廣泛使用的協定有 MQTT 和 AMQP ,以下也會簡單介紹一下。

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan