1. 程式人生 > >關於我這三年的架構歷程(待完成)

關於我這三年的架構歷程(待完成)

開發十年,就只剩下這套架構體系了! >>>   

從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。 方案詳情: