gateway - 使用 implements GlobalFilter, Ordered 做全局攔截器的坑-簡單總結


我被坑了

1.背景

因為spring boot 和spring cloud 出現遠程攻擊漏洞,不得不升級到最新的,而最新的不支持以前用的微服務框架,需要重新搭建

不再支持zuul網關,只能更換功能強大的gateway 

。。。。。。。巨坑來了,沒有老師,沒有詳細的文檔,只能把博客都翻了一遍,最后雖然成功了,但是走過的坑無數

最難受的是各種包沖突

請棄用zuul的操作邏輯,在這里不頂用

zuul是同步阻塞的,而gateway是非全異步非阻塞

說人話就是

zuul每次處理請求和響應都是生成一個線程做同步阻塞處理,邏輯不結束線程不結束,可以在主線程操作,可以在任何的地方做阻塞操作,如調用微服務接口和訪問http互聯網接口

然而 gateway這個奇葩

雖然也是在任何時候都可以做同步阻塞,但是不是任何地方都可以,做全局攔截器,可以隨時獲取請求信息,此時此地可以做同步阻塞操作,如調用微服務等,但是響應時,
必須new一個ServerHttpResponseDecorator 來操作,內部重寫匿名類的實現方法來修改響應體等信息,注意了,此時此刻不允許做同步阻塞操作,即不允許調用微服務、
查詢數據庫等操作,如果在這里有統一攔截響應體然后需要調微服務接口的需求,趁早換方案吧,這里最多做點本地處理,如更換響應內容和加密解密等操作

還有很多坑,沒時間寫了,等有空再整理一下

 


免責聲明!

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



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