軟件架構
本系統軟件采用良好可擴展的微服務架構,功能可獨立發布、配置、部署、運行和測試,支持進一步需求和功能在架構中的良好集成,
具體的技術架構圖如下所示:
技術架構圖
1. Nacos服務注冊中心設計
采用Nacos作為注冊中心和配置中心,Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
2. Spring Cloud Gateway網關框架
采用Spring Cloud Gateway網關控制框架,Spring Cloud Gateway是Spring Cloud官方推出的第二代網關框架,取代Zuul網關。網關作為流量的,在微服務系統中有著非常作用,網關常見的功能有路由轉發、權限校驗、限流控制等作用。
SpringCloud Gateway功能特征如下:
(1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進行構建;
(2) 動態路由:能夠匹配任何請求屬性;
(3) 集成 Spring Cloud 服務發現功能;
(4) 可以對路由指定 Predicate(斷言)和 Filter(過濾器);
(5) 易于編寫的 Predicate(斷言)和 Filter(過濾器);
(6) 集成Hystrix的斷路器功能;
(7) 請求限流功能;
(8) 支持路徑重寫。
3. Ribbon負載均衡框架
采用Ribbon解決客戶端負載均衡問題,Ribbon是Netflix發布的開源項目,主要功能是提供客戶端的軟件負載均衡算法,Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等解決方案,Ribbon的負載均衡算法有:
(1) RoundRobinRule:輪詢;
(2) RandomRule:隨機;
(3) AvailabilityFilteringRule:會先過濾掉由于多次訪問故障而處于斷路器跳閘狀態的服務,還有并發的連接數量超過閾值的服務,然后對剩余的服務列表按照輪詢策略進行訪問;
(4) WeightedResponseTimeRule:根據平均響應時間計算所有服務的權重,響應時間越快服務權重越大被選中的概率越高。剛啟動時如果統計信息不足,則使用RoundRobinRule策略,等統計信息足夠,會切換到WeightedResponseTimeRule
(5) RetryRule:先按照RoundRobinRule的策略獲取服務,如果獲取服務失敗則在指定時間內會進行重試,獲取可用的服務;
(6) BestAvailableRule:會先過濾掉由于多次訪問故障而處于斷路器跳閘狀態的服務,然后選擇一個并發量最小的服務;
(7) ZoneAvoidanceRule:默認規則,復合判斷server所在區域的性能和server的可用性選擇服務器。
4. Hystrix延遲容錯框架
采用Hystrix框架來處理分布式系統的延遲和容錯情況,在分布式系統里,許多依賴不可避免的會調用失敗,比如超時、異常等,Hystrix能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,避免級聯故障,以提高分布式系統的彈性。Hystrix的主要功能:
(1) 服務降級:整體資源不夠了,忍痛將某些服務先關掉,帶服務正常后,再開啟;
(2) 服務熔斷機制是應對雪崩效應的一種微服務鏈路保護機制,當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的調用,快速返回"錯誤"的響應信息。當檢測到該節點微服務調用響應正常后恢復調用鏈路。在SpringCloud框架里熔斷機制通過Hystrix實現。Hystrix會監控微服務間調用的狀況,當失敗的調用到一定閾值,缺省是5秒內20次調用失敗就會啟動熔斷機制。
(3) 接近實時的監控:Hystrix提供了準實時的調用監控(Hystrix Dashboard),Hystrix會持續地記錄所有通過Hystrix發起的請求的執行信息,并以統計報表和圖形的形式展示給用戶,包括每秒執行多少請求多少成功,多少失敗等。