1. 程式人生 > >記錄Spring Cloud應用在阿里雲架構部署

記錄Spring Cloud應用在阿里雲架構部署

常用的Spring Cloud體系架構

系統部署採用阿里雲平臺,採用的技術架構為SpringCloud.

採用線上阿里雲架構製圖工具: Freedgo Design 地址:https://www.freedgo.com, 具體架構如下:

整體架構

主要居於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的可擴充套件開發平臺。就其本身而言,它只是一個框架和一組服務,用於通過外掛元件構建開發環境。
  • 主要使用的開源軟體
軟體功能版本
JDK JAVA開發SDK包 1.8 以上
Ubuntu Linux伺服器作業系統 14
MySQL 資料庫 5.7+
Maven java 專案構建工具 4.0
Spring Framework 系統架構 5.0以上
Spring cloud 分散式微服務 2.0+
kafka 訊息訂閱釋出框架
Redis 高效能Key value儲存
Docker