關於我這三年的架構歷程(待完成)
阿新 • • 發佈:2019-03-26
從16年7月實習至今,快三年的開發經歷中,經手了好幾個專案。目前有幸作為一個專案的負責人,完成了一個專案的完全架構設計。因此想記錄下這份架構設計中的點點面面。
總架構:
- 基於DNS的負載均衡和路由分發
- 基於keepalived完成的spring cloud gateway 閘道器叢集和負載均衡
- 基於閘道器反代提供的子業務服務叢集和節點。
- 佐以 consul 主從為註冊中心。redis單點(後續預計改進)+rabbitMQ,RPC服務呼叫等系列服務。
- 資料庫採用oracle dataGuard 進行主備服務(進行)。檔案系統TFS(進行)
架構圖:
-
DNS: 採用DNS主要做到異地多活(容災)和路由分發(電信網走電信,聯通走聯通) 異地多活:主要參照阿里https://help.aliyun.com/knowledge_detail/39196.html?spm=5176.2000002.0.0.cdbd2fa9KoxRcW 提供不同的物理機房(目前為同城雙網託管),防止單機房出現的物理斷網,斷電等故障。
-
閘道器叢集: 在公網上釋出的服務,最終都由dns伺服器和瀏覽器解析為對應IP和埠,那麼如果作為入口的埠監聽程式出現故障,這會導致整個服務無法對外提供。因此參照nginx-keepalived方案,實現了keepalived-spring-cloud-gateway方案。
該方案主要在於取消nginx的反代消耗。直接有spring cloud gateway 程式進行監聽服務埠(80|443) 。當然也可能用nginx 完成業務路由的鑑權,不過考慮維護成本最終選擇gateway。 方案詳情: