1、 網關架構總體設計
當用戶請求系統時,必須通過網關路由到對應的服務。請求網關的順序:
1. 通過過安全策略攔截器進行記錄請求日誌同時進行防止惡意訪問和攻擊安全防護策略;
2. 通過熔斷機制防止系統故障蔓延,導致整個系統癱瘓。
3. 到達路由之前判斷是否需要限流,如需要限流將進行限流策略
4. 根據路由服務規則和服務列表路由到相應的微服務中
其中當某個請求出錯或無響應次數達到一定閾值時實行熔斷措施直接返回錯誤信息,整個請求進行負載均衡策略,包括zuul網關負載均衡和微服務提供者負載均衡。
網關架構示意圖
2、 負載均衡
為了避免單個服務用戶請求過載,導致微服務癱瘓不可用,可以為每個微服務新建多個實例,然後通過通過負載均衡機制均衡的分配請求到各個實例。這裡處理業務處理的服務做負載均衡外,同時把zuul網關也當作一個服務進行註冊然後做負載均衡。
3、 安全策略
在請求達到路由之前,建立一個pre類型的限流過濾器,對用戶請求請求日誌信息記錄包括請求請求者的IP、請求的url、請求的時間;再進行安全防護策略,主要策略如下:
(1) 正常情況只驗證用戶token的合法性,主要驗證是否攜帶token以及token的合法性(不需進行token的頁面直接進行過濾不處理)
(2) 若檢測到用戶訪問頻率過高要求其登錄;若已經登錄進行驗證碼輸入;
(3) 若此時訪問頻率還是過高,限制該用戶訪問流量;
(4) 若以上策略都不起作用,將對該ip進行流量限制;
用戶的監控級別有關注、監控、重點監控
註:
PRE: 這種過濾器在請求被路由之前調用。
ROUTING:這種過濾器將請求路由到微服務。
POST:這種過濾器在路由到微服務以後執行。
ERROR:在其他階段發生錯誤時執行該過濾器。
4、 限流策略
在請求到達路由前,建立一個pre類型的限流過濾器,判斷是否需要限流,若需要限流根據配置的限流策略進行限流。限流的規則包括通過用戶限制、URL限制、ServerId限制,其中限流的參數包括請求服務閾值(超過閾值進行限流)、允許請求數量、限流等待的時間、限流的規則。限流策略中的限流算法將採用漏通算法和令牌桶算法進行限制(具體可以進行配置)。
註:
PRE: 這種過濾器在請求被路由之前調用。
ROUTING:這種過濾器將請求路由到微服務。
POST:這種過濾器在路由到微服務以後執行。
ERROR:在其他階段發生錯誤時執行該過濾器。
5、 網關路由
請求達到路由後由zuul網關內部routing類型過濾器進行路由,將用戶請求路由到各個微服務中。路由規則有通過serverId、URL進行路由。
註:
PRE: 這種過濾器在請求被路由之前調用。
ROUTING:這種過濾器將請求路由到微服務。
POST:這種過濾器在路由到微服務以後執行。
6、 熔斷器
在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致級聯故障,進而造成整個系統不可用的情況。為了避免這種現象,將對系統做保護措施,當某個服務的請求錯誤或無響應次數達到一定的閾值時,對該服務進行熔斷,阻止用戶進行請求使故障蔓延整個系統,當服務正常後恢復熔斷。