1.為什么需要gateway作為網關/路由
在微服務框架中,我們各個微服務都不是直接暴露給其他服務來調用的。但假如有一個用戶知道了一個服務的ip:端口號:url:訪問參數,就能直接訪問你,再進一步,如果這個用戶開始惡意訪問、惡意攻擊,就會摧毀咱們的微服務系統。所以需要一個網關對我們的微服務進行保護。
網關完成對微服務保護的核心:過濾器。
2.過濾方式
- pre:在轉發之前執行,一般用來做參數校驗、權限校驗、流量監控、日志輸出、協議轉換。
- post:在后端響應之后,但沒有返回給前端之前執行,一般用來作響應頭和相應內容的修改、流量監控、日志輸出。
3.兩種過濾器類型
- GatewayFilter:局部過濾器,針對單個路由。
- 在springcloud gateway組件中提供了大量內置的局部過濾器,對請求和響應做過濾操作。
- 遵循約定大於配置的思想,只需要在配置文件配置局部過濾器的名稱,並為其指定對應的值,就可以讓其生效。
- GlobalFilter:全局過濾器,針對所有路由。
- 不需要特殊的配置,系統初始化的時候自動加載,並作用在每個路由上。
- gateway的核心功能也是通過內置的全局過濾器來完成的。
- 自定義全局過濾器的步驟:
- 實現GlobalFilter和Ordered接口
- 復寫方法
- 完成邏輯處理
