Gateway完全入門指南


什么是路由網關?它存在意義又何在?

在微服務中,我們會有很多個微服務,但是客戶端只有一個,它有調用我們遠程接口的時候,就要使用不同的地址,比如下邊三個微服務(也是本項目中出現的用到的三個微服務,獲取代碼地址見文末)

服務名 項目名 示例接口調用地址
商品模塊 gateway-goods-7001 http://localhost:7001/goods/main
訂單模塊 gateway-order-8001 http://localhost:8001/order/main
用戶中心模塊 gateway-user-9001 http://localhost:9001/user/main

這樣,客戶端在調用的時候,還要使用不同的地址(主機名和端口),能不能就直接使用一個地址可以調用呢?就類似於我們之前寫的一個war包那種項目?比如:

  • http://localhost:80/goods/main 商品模塊
  • http://localhost:80/order/main 訂單模塊
  • http://localhost:80/user/main 用戶中心模塊

GateWay的入門操作

  • 引入依賴pom.xml

  • 配置application.yml

  • 主啟動類

好了,然后直接啟動那三個微服務和這個項目,在瀏覽器中,就可以直接使用http://localhost:80/goods/main這樣的地址訪問各個服務了。

GateWay的三大組件

路由(Route)

這個在上邊的入門操作中已經演示過了,配置spring.cloud.gateway.routes來進行路由匹配。

但是,在上邊我們配置的uri是網絡地址(當然,可以直接通過我們的localhost配置到網絡上其他的地址的,如baidu.com)。在微服務中,我們肯定是不能直接寫死的,而且一個微服務也可能會有多個地址,所以,我們一定要配置成注冊中心的微服務名。修改的配置內容如下:

  • 除了上述的application.yml外,還有一種方式配置路由(我猜你肯定不要說是applicatin.properties吧)。那就是通過注入SpringBean的方式,這里就不說,有興趣的可以去官網看一下。但是建議你使用配置文件配置,因為可以集成Nacos進行動態配置,要比寫進代碼里更加靈活

斷言(Predicates)

在上邊的配置文件中,routes中的predicates就是一系列的斷言,意思就是說,只有滿足這樣的條件就可以怎么怎么地。上邊用到了Path這一個屬性,除此之外,還有

path是根據路徑匹配,常用的還有Method(請求方法)、Host(請求的地址)等。這幾個斷言是“且”的關系,也就是說,如果你配置了多個predicates就要同時滿足才能進行路由轉發。詳細參考

過濾器(Filter)

就是在web應用中使用的Filter,它有什么用呢?最常見的用處就是在前后端分離項目中,我們可以在網關層進行Token等授權的驗證(明天給你們來個實例)。

利用SpringSecurity和Gateway結合進行網絡鑒權和權限驗證

代碼地址:關注微信公眾號“小魚與Java”,回復SpringCloud獲取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM