1. 程式人生 > 其它 >SpringCloud Alibaba實戰 -引入服務閘道器Gateway

SpringCloud Alibaba實戰 -引入服務閘道器Gateway

https://www.cnblogs.com/three-fighter/p/14971538.html

  • Nginx:Nginx由核心和模組組成,核心的設計非常微小和簡潔,完成的工作也非常簡單,僅僅通過查詢配置檔案與客戶端請求進行 URL 匹配,用於啟動不同的模組去完成相應的工作。
  • Kong:Kong是一款基於OpenResty(Nginx + Lua模組)編寫的高可用、易擴充套件的,由Mashape公司開源的API Gateway專案。Kong是基於NGINX和Apache Cassandra或PostgreSQL構建的,能提供易於使用的RESTful API來操作和配置API管理系統,所以它可以水平擴充套件多個Kong伺服器,通過前置的負載均衡配置把請求均勻地分發到各個Server,來應對大批量的網路請求
  • Zuul 是 Netflix 開源的微服務閘道器元件,它可以和 Eureka、Ribbon、Hystrix 等元件配合使用。社群活躍,融合於 SpringCloud 完整生態,是構建微服務體系前置閘道器服務的最佳選型之一。
  • Spring Cloud Gateway 是Spring Cloud的一個全新的API閘道器專案,目的是為了替換掉Zuul1。Gateway可以與Spring Cloud Discovery Client(如Eureka)、Ribbon、Hystrix等元件配合使用,實現路由轉發、負載均衡、熔斷等功能,並且Gateway還內建了限流過濾器,實現了限流的功能。
  • bootstap.yml:在配置檔案裡除了應用名稱,我們還配置了Nacos的相關配置,不太清楚的同學可以檢視上一節。
複製程式碼
###服務名稱(服務註冊到nacos名稱,如serviceId)
spring:
cloud:
nacos:
discovery:
server-addr: http://www.XXXX.com:8848
namespace: de4a857c-8341-4d3d-a1e0-f2e64eaf8c97
config:
server-addr: http://www.XXXXX.com:8848
file-extension: yaml
#name: ${spring.application.name}
prefix: ${spring.application.name} #nacos 配置中心檔案字首
group: DEFAULT_GROUP
#變更重新整理
refresh: true
remote-first: true
enabled: true
namespace: de4a857c-8341-4d3d-a1e0-f2e64eaf8c97

我們在裡面進行了路由轉發的配置,也就是routes,我們來看一看這些配置項都是什麼意思:

  • id:路由的唯一標識,用以和其它Route區分
  • uri:請求要轉發到的地址,lb指的是從nacos中按照名稱獲取微服務,並遵循負載均衡策略
  • predicates:路由需要滿足的條件,也是個陣列(這裡是的關係)
  • filters:過濾器,請求在傳遞過程中可以通過過濾器對其進行一定的修改

在這個配置項裡,我們定義了user開頭的請求,分發到user-service這個服務。

接下來我們看看效果吧!

到此,我們已經引入了Spring Cloud Gateway作為微服務閘道器,並完成了基本的路由轉發的功能。

除了基本的路由轉發,服務閘道器還可以完成許可權校驗、限流、API校驗等功能,後續我們會繼續深入,敬請期待!

小蚊子大人