分享一個SpringCloud微服務網關架構以及安全策略

2020-09-15 程序工具人

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、 熔斷器

在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致級聯故障,進而造成整個系統不可用的情況。為了避免這種現象,將對系統做保護措施,當某個服務的請求錯誤或無響應次數達到一定的閾值時,對該服務進行熔斷,阻止用戶進行請求使故障蔓延整個系統,當服務正常後恢復熔斷。

相關焦點

  • springcloud-第五回 服務網關 gateway
    作用: 網關是介於客戶端和伺服器端之間的中間層,所有的外部請求都會先經過 網關這一層。也就是說,API 的實現方面更多的考慮業務邏輯,而安全、性能、監控可以交由 網關來做,這樣既提高業務靈活性又不缺安全性工作原理:客戶端向Spring Cloud網關發出請求。
  • 微服務網關Spring Cloud Gateway全搞定
    gateway官網:https://spring.io/projects/spring-cloud-gateway實現微服務網關的技術有很多,nginx Nginx (engine x) 是一個高性能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務zuul ,Zuul 是 Netflix
  • springcloud-路由網關Zuul
    場景描述今天接著介紹springcloud,今天介紹下springcloud的路由網關-Zuul,外圍系統或者用戶通過網關訪問服務,網關通過註冊中心找到對應提供服務的客戶端,網關也需要到註冊中心進行註冊。
  • Spring Cloud服務網關 zuul 快速入門
    前言:上篇博客中,我們快速搭建了一個Spring Cloud微服務的dome,那麼這個博客就是在哪個dome的基礎上開始講解一下服務網關zuul的使用,zuul的作用我在我的前面博客中也有提到,這裡就不多說。
  • 微服務平臺之網關架構與應用
    API 網關是介於客戶端和伺服器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,網關的角色是作為一個 API 架構,用來保護、增強和控制對於 API 服務的訪問。業務聚合:作為所有後端業務服務的聚合點。中介策略:實現安全,驗證,路由,過濾等策略。統一管理:對所有API服務和策略進行統一管理。
  • 微服務網關Zuul遷移到Spring Cloud Gateway
    背景在之前的文章中,我們介紹過微服務網關Spring Cloud Netflix Zuul,前段時間有兩篇文章專門介紹了Spring Cloud的全新項目Spring Cloud Gateway,以及其中的過濾器工廠。本文將會介紹將微服務網關由Zuul遷移到Spring Cloud Gateway。
  • springcloud(十一):服務網關Zuul高級篇
    時間過的很快,寫springcloud(十):服務網關zuul初級篇還在半年前,現在已經是2018年了,我們繼續探討Zuul更高級的使用方式。上篇文章主要介紹了Zuul網關使用模式,以及自動轉發機制,但其實Zuul還有更多的應用場景,比如:鑑權、流量轉發、請求統計等等,這些功能都可以使用Zuul來實現。
  • SpringCloud網關及Zuul項目搭建,你確定你了解?
    2、為什麼要使用微服務網關不同的微服務一般會有不同的網絡地址,而客戶端可能需要調用多個服務接口才能完成一個業務需求,若讓客戶端直接與各個微服務通信,會有以下問題:(1)客戶端會多次請求不同微服務,增加了客戶端複雜性
  • springcloud(三)網關zuul
    zuul介紹zuul:網關,用於分布式架構,提供了權限、限流、路由、監控等功能,同時還能對簡化前端對後端的請求,為什麼這麼說呢?這裡就是zuul路由的功勞,在如今分布式橫行的時代,一個前端可能對應著即使或者上百個後端服務,如果不使用網關或者ngxin,那麼前端將要記住幾十或者上百的域名,這樣如果域名發生變化,維護就會變得很糟糕,那使用網關之後有什麼不同呢?前端只需要和網關做交互,網關負責做路由轉發,這樣,前端只需要維護一個域名,後端也會輕鬆很多,到這裡可能有疑問了,nginx同樣能實現,為什麼不選用nginx而選用網關呢?
  • springcloud實踐二:gateway網關詳解
    微服務框架當前大行其道,網關在微服務架構中是一個非常重要的部分,網關一般作為項目的統一請求入口提供給前端開發人員,前端開發人員不用知道每個微服務的請求地址。網關可以統一對所有請求做過濾、限流、負載均衡、監控等處理,而不必在每個微服務項目重複處理請求。
  • SpringCloud網關聚合Swagger接口文檔實踐
    Swagger在線文檔生成工具整合到後端框架中也是比較簡單的,本文將以SpringCloud的微服務架構演示如何將swagger整合到網關服務中。下面詳細介紹下整合的詳細過程:swagger官方文檔:https://swagger.io/docs/分別新建三個微服務其中具體功能如下:網關服務sentinel-cloud-gateway;
  • Spring Cloud 組件介紹
    微服務:拆分、單一、獨立、組件化。將一個複雜的龐大的項目拆分成一個一個的小項目獨立的運行,通過接口的方式組裝成一個大項目。springcloud是基於springboot的一套實現微服務的框架。提供了微服務開發所需要的配置管理,服務管理,斷路器,智能路由,微代理,控制總線,全局鎖,策略競選,分布式會話和集群狀態管理等組件。
  • 微服務實戰系列(六)-網關springcloud zuul
    場景描述今天接著介紹springcloud,今天介紹下springcloud的路由網關-Zuul,外圍系統或者用戶通過網關訪問服務,網關通過註冊中心找到對應提供服務的客戶端,網關也需要到註冊中心進行註冊。
  • Springcloud終於按捺不住推出了自己的服務網關
    Spring Cloud GatewaySpring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基於 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。
  • Spring Cloud - 網關
    什麼是網關老張神秘一笑,說道:「我給你看兩張圖你就明白了。」然後在小齊的電腦上搜出了這篇文章裡面的兩張圖。「我們假設你現在要做一個電商應用,前端是移動端的APP,後端是各種微服務。那你可能某個頁面需要調用多個服務的數據來展示。
  • 架構師帶你面試②Spring Cloud面試題2020
    因此對於想研究微服務架構的同學來說,學習Spring Cloud是一個不錯的選擇。Eureka:服務治理組件,包括服務端的註冊中心和客戶端的服務發現機制;Ribbon:負載均衡的服務調用組件,具有多種負載均衡調用策略;Hystrix:服務容錯組件,實現了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;Feign:基於Ribbon和Hystrix的聲明式服務調用組件;Zuul:API網關組件
  • 基於Spring Cloud開發前後端分離企業級微服務框架,源碼分享
    基於layui+springcloud的企業級微服務框架(用戶權限管理,配置中心管理,應用管理,....),其核心的設計目標是分離前後端,快速開發部署,學習簡單,功能強大,提供快速接入核心接口能力,其目標是幫助企業搭建一套類似百度能力開放平臺的框架;基於layui前後端分離的企業級微服務架構兼容spring cloud netflix & spring cloud alibaba
  • 微服務架構之spring cloud gateway
    Spring Cloud Gateway是spring cloud中起著非常重要的作用,是終端調用服務的入口,同時也是項目中每個服務對外暴露的統一口徑,我們可以在網關中實現路徑映射、權限驗證、負載均衡、服務聚合等業務功能。
  • Spring Cloud面試題分享
    使用Spring Boot開發分布式微服務時,我們面臨以下問題:與分布式系統相關的複雜性 -這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。服務發現 -服務發現工具管理群集中的流程和服務如何查找和互相交談。它涉及一個服務目錄,在該目錄中註冊服務,然後能夠查找並連接到該目錄中的服務。冗餘 -分布式系統中的冗餘問題。
  • F版本SpringCloud 2—什麼是SpringCloud?SpringCloud版本選擇
    引言:搭建微服務架構就像是買電腦,使用SpringCloud就是在買品牌機。前言昂,美好的天氣裡,不想直接說技術,給小夥伴萌看看傍晚的天空吧。—— 能找到天上的北極星嗎?上一篇文章中,通過一個簡單的小故事,輕鬆愉快的講解了架構的演變,以及為啥會有微服務,什麼是微服務。