在 Web 開發中,判斷一個系統是否為「分布式」的標準非常直觀:如果整個業務只部署在一台物理伺服器上,那就是非分布式(單體架構);反之,若業務拆分部署在多台伺服器上,透過網路協作完成任務,即為分布式系統。
單機效能有物理上限。處理器速度、記憶體容量、網卡吞吐量都無法無限增長。以 12306 鐵路售票系統為例,面對春運期間數百萬用戶同時搶票,單台伺服器根本無法承載,必須將服務拆分、水平擴展到成百上千台伺服器組成的集群中,才能滿足高併發、高可用的需求。
| 維度 | 非分布式(單體) | 分布式 |
|---|---|---|
| 部署單元 | 單一進程/伺服器 | 多進程/多伺服器叢集 |
| 擴展方式 | 垂直擴展(換更強硬體) | 水平擴展(加機器) |
| 故障影響 | 單點故障,全站癱瘓 | 單節點故障可隔離,高可用 |
| 開發複雜度 | 低,適合中小專案 | 高,需解決分散式事務、一致性、網路分區等問題 |
| 運維成本 | 低 | 高(需監控、日誌聚合、自動化部署) |
選擇哪種架構,取決於業務規模、併發量、團隊能力與成本預算。「過早分布式」是大忌,先做單體做到極致,再按需拆分,才是務實之道。