网关基本概念
API網(wǎng)關介紹
API?網(wǎng)關出現(xiàn)的原因是微服務架構的出現(xiàn),不同的微服務一般會有不同的網(wǎng)絡地址,而外部客戶端可能需要調(diào)用多個服務的接口才能完成一個業(yè)務需求,如果讓客戶端直接與各個微服務通信,會有以下的問題:
(1)客戶端會多次請求不同的微服務,增加了客戶端的復雜性。
(2)存在跨域請求,在一定場景下處理相對復雜。
(3)認證復雜,每個服務都需要獨立認證。
(4)難以重構,隨著項目的迭代,可能需要重新劃分微服務。例如,可能將多個服務合并成一個或者將一個服務拆分成多個。如果客戶端直接與微服務通信,那么重構將會很難實施。
(5)某些微服務可能使用了防火墻?/?瀏覽器不友好的協(xié)議,直接訪問會有一定的困難。
以上這些問題可以借助?API?網(wǎng)關解決。API?網(wǎng)關是介于客戶端和服務器端之間的中間層,所有的外部請求都會先經(jīng)過?API?網(wǎng)關這一層。也就是說,API?的實現(xiàn)方面更多的考慮業(yè)務邏輯,而安全、性能、監(jiān)控可以交由?API?網(wǎng)關來做,這樣既提高業(yè)務靈活性又不缺安全性
Spring Cloud Gateway
Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技術開發(fā)的網(wǎng)關,Spring Cloud Gateway旨在為微服務架構提供簡單、有效和統(tǒng)一的API路由管理方式,Spring Cloud Gateway作為Spring Cloud生態(tài)系統(tǒng)中的網(wǎng)關,目標是替代Netflix Zuul,其不僅提供統(tǒng)一的路由方式,并且還基于Filer鏈的方式提供了網(wǎng)關基本的功能,例如:安全、監(jiān)控/埋點、限流等。
Spring Cloud Gateway核心概念
網(wǎng)關提供API全托管服務,豐富的API管理功能,輔助企業(yè)管理大規(guī)模的API,以降低管理成本和安全風險,包括協(xié)議適配、協(xié)議轉發(fā)、安全策略、防刷、流量、監(jiān)控日志等貢呢。一般來說網(wǎng)關對外暴露的URL或者接口信息,我們統(tǒng)稱為路由信息。如果研發(fā)過網(wǎng)關中間件或者使用過Zuul的人,會知道網(wǎng)關的核心是Filter以及Filter Chain(Filter責任鏈)。Sprig Cloud Gateway也具有路由和Filter的概念。下面介紹一下Spring Cloud Gateway中幾個重要的概念。
(1)路由。路由是網(wǎng)關最基礎的部分,路由信息有一個ID、一個目的URL、一組斷言和一組Filter組成。如果斷言路由為真,則說明請求的URL和配置匹配
(2)斷言。Java8中的斷言函數(shù)。Spring Cloud Gateway中的斷言函數(shù)輸入類型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的斷言函數(shù)允許開發(fā)者去定義匹配來自于http request中的任何信息,比如請求頭和參數(shù)等。
(3)過濾器。一個標準的Spring webFilter。Spring cloud gateway中的filter分為兩種類型的Filter,分別是Gateway Filter和Global Filter。過濾器Filter將會對請求和響應進行修改處理
如上圖所示,Spring cloud Gateway發(fā)出請求。然后再由Gateway Handler Mapping中找到與請求相匹配的路由,將其發(fā)送到Gateway web handler。Handler再通過指定的過濾器鏈將請求發(fā)送到我們實際的服務執(zhí)行業(yè)務邏輯,然后返回。
?
總結
- 上一篇: canal数据同步(客户端代码编写)
- 下一篇: Nacos配置中心介绍