大型商業系統如冰山,使用者看到的業務功能僅是水面以上一角;水面下隱藏著遠程通訊、負載均衡、事務一致性、高可用性等決定系統生死的核心架構決策。本文梳理 16 大必考量項,為架構師與資深工程師提供系統性檢視清單。
核心在於 Client-Server 連接邏輯設計:請求分發策略、參數代理與序列化協議選型。需決定採用 RMI、Web Service、gRPC 還是自訂協議,並處理連接池、逾時重試、熔斷降級等韌性模式。
Client 必須能以最小成本連接到最優 Server。關鍵決策點:
當 Server 崩潰或網路分區發生:
新系統必須包容既有資產:主機資料存取、異構資料庫同步、API 適配器模式、Strangler Fig 應用綁絞遷移策略。
並發存取同一資料列、資料庫崩潰時的資料完整性。解決方案演進:
Server 容器狀態複制機制:
優雅關機流程:停止接收新請求 → 等待在途請求完成/逾時 → 釋放資源 → 註銷服務發現 → 進程退出。Kubernetes preStop hook、Spring Boot Actuator /shutdown endpoint 等標準化實踐。
結構化日誌、分散式追蹤、指標監控、告警分級。一條優質日誌應包含:TraceId、SpanId、時間戳、服務名、操作、耗時、結果、關鍵業務欄位。
Runbook 自動化、混沌工程演練、備份還原演練、RTO/RPO 定期驗證、事故複盤機制。
執行緒池參數調優 (核心/最大數、隊列長度、拒絕策略)、非阻塞 I/O (Netty/Reactor)、虛擬執行緒、反應式程式設計。
訊息佇列選型、死信佇列、重試策略、訊息冪等、順序性保證、事務性訊息、延遲佇列。
實體建立/銷毀觸發器、延遲載入 vs 急切載入、快取失效策略、領域事件發布。
連接池、執行緒池、物件池、記憶體池。關鍵指標:池大小、獲取逾時、洩漏偵測、動態縮放。
避免重複資料庫存取造成網路擁塞與資料庫壓力:
這 16 項考量並非孤立存在,而是相互影響、相互制約的系統工程。例如:強一致性事務 (5) 會影響叢集擴展性 (6) 與快取策略 (16);動態發布 (7) 依賴完整觀測體系 (9) 與優雅關機 (8)。
優秀架構師的核心能力,在於根據業務階段、團隊能力、技術債務、成本預算,在每個決策點上做出「當下最適合」的權衡,並預留演進空間。沒有銀彈,只有持續演進的架構。