系統部署采用阿里云平臺,采用的技術架構為SpringCloud.
采用在線阿里云架構制圖工具:具體架構如下:
整體架構
主要居于Spring Cloud的分布式微服務架構。主要功能包括:
服務注冊發現中心(Eureka server)
通過服務發現可以抽象出部署服務的物理位置如IP,服務調用通過了邏輯名稱而不是實際的物理位置,同時服務發現也處理了注冊和注銷。
服務配置中心(config server)
通過集中式的服務來處理應用程序配置數據。做到無論啟動多少個微服務實例,這些實例始終使用相同的配置,同時服務的配置可以和微服務系統分離
服務網關(ZUUL)
通過ZUUL網關,可以強制執行一些功能如內容過濾,路由轉發,過濾器等等
Spring Sleuth & ZIPKIN(分布式服務跟蹤)
通過Sleuth 相關ID進行全鏈路跟蹤,可以分析服務調用的性能
事件驅動及異步消息
用于處理異步事件如短消息推送,郵件發送等。
用戶認證中心(auth2)
ZUUL網關
ZUUL網關主要的功能
路由及過濾器設置
通常在ZUUL網關設置過濾器包括前置過濾器、后置過濾器、路由過濾器,可以自定義一些邏輯,在大多數情況下,這種自定義邏輯用于強制執行一組一致的應用程序策略,如安全性、日志記錄和對所有服務的跟蹤等等。
路由的設置可以指定路由地址URL對應的微服務如下圖:
服務注冊與發現:
ZUUL網關服務器通過注冊到Eureka服務器,實現了Eureka上注冊的微服務的發現從而轉發用戶的請求到各應用模塊,網關服務器中Ribbon同時會緩存微服務相關信息以減少對EureKa訪問。
微服務應用
Oauth2授權訪問
ZUUL網關負責請求的路由轉發,Request請求不僅僅來在用戶瀏覽器,有可能是微服務之間的相互調用。
登錄用戶請求或服務之前調用會在request請求頭中攜帶Authorization 頭信息來表示當前用戶的身份信息,
Http Restful Api
微服務應用采用 Spring RestController 對外發布 Http Restful Api服務,
微服務之間的調用
微服務之間相互調用而不必知道被調用者所在位置是通過Eureka服務發現實現,當微服務啟動時會注冊自己到Eureka服務中心,服務消費者可以使 Ribbon 來進行交互。有三種方式的調用:
Spring DiscoveryClient
啟用了 RestTemplate 的 Spring DiscoveryClient
通過 Netflix Feign 客戶端方式
部署方案(docker)
采用Docker通過spotify 的docker-maven-plugin工具進行docker image進行打包鏡像
灰度測試
通過ZUUL的過濾對新上線的服務做路由的權重算法,做到限流,A/B測試。
平臺開發
開發語言:java,Java是一種可以撰寫跨平臺應用程序的面向對象的程序設計語言。
開發工具:eclipse,Eclipse 是一個開放源代碼的、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發環境。
主要使用的開源軟件