Clean Architecture 的作者,Robert C. Martin 在前言中問道: 「軟體是由什麼構成的?」
相較於實體房屋,軟體的一切都很抽象,在軟體的世界,狗可以學鴨子叫、雞可以飛在天上、球可以永不落地 — 只要寫得夠糟XD
從語言、函式、物件、設計模式到系統設計,面對越來越抽象的問題,我們該從何處下手?
抽象的思考總是困難的,既然如此,我們是否能建立一個 SOP ,讓我們的思考不再發散,而是聚焦於 「當下重要的事情」,從高層開始思考,建構出整體的架構後,再逐步完善各個元件,讓抽象的思考有跡可循,幫助我們設計出穩健、可擴展的系統!
回憶一下 Day 16 的基本系統架構 可以看到我們只有一台對外的 API Service, 所有的請求都會透過此服務轉給我們內部的服務, 當使用量很大時可能會...
上篇我們介紹了擴展對外 API Service 的方式, 現在我們可以透過路由分散大量的請求減輕負擔和避免 SPOF 了既然對外的 API Service 沒問...
我們已經擴展了外部和內部的 API Service, 透過均衡負載器分散流量給每一個伺服器, 可以說我們透過均衡負載器將 外部服務 和 內部服務 "解...
雖然 Message Queue 沒有一個標準化規範, 實作會根據業務情境有些許不同, 但大多數都支援以下功能 生產者-消費者 模式 (Producer-Co...
昨天介紹了 Message Queue 的基本功能與架構, 今天繼續介紹在此之上延伸出更具擴展性的 Event Streaming Platform (ESP)...
有了 Message Queue 之後, 我們已經將服務之間解綁, 現在只剩下 Database 還是單一節點, 所以今天就來 Scaling Database...
上篇介紹了 RDBMS 的擴展方式: replica, sharding, consensus由於這些擴展方式也都適用於 NoSQL Database並且相較於...
前面我們介紹了分散式系統中對於 可用性 和 一致性 的抉擇也簡單比較了各個 Database 的設計傾向, 並透過 Replication, Sharding,...
接續前篇提到從硬碟存取資料造成的效能瓶頸, 可以改從 記憶體 存取改善效能另一個效能的瓶頸會在 網路速度, 可以透過縮短 服務 和 客戶端 的地理距離來改善 將...
最後一天了, 做個總結 碎碎念 這次是第二次參加鐵人賽, 去年因為剛好讀完 CMake, 所以想著趁記憶還在, 就報名鐵人賽順便做筆記XD發現在寫文章的過程中,...