最近我們公司的微服務即将上線一個重要項目,也做了dubbo服務化,可擴充或者說服務節點擴容是沒什麼問題,而且服務都是部署到雲平台上的,但用戶端到服務端中間沒有做網關層,始終不放心,是以上周五的時候研究了下Spring Cloud Gateway微服務網關
看完後了解的大概的意思,網關是用來做什麼呢?主要是用來做一些統一的鑒權、日志,負載均衡,緩存,路由,過濾等功能
那Spring Cloud Gateway官網介紹重點就是:
1、斷點路由:我們在做單元測試的時候是不是也有斷言呢,其實就是做一個判斷,判斷目前的請求是否符合要求
2、過濾工廠:多種過濾工廠,這裡就不一一列舉,每個過濾工廠可以 疊加使用,類似sql中的and可以同時過濾
我們隻要在配置檔案中配置好路由規則,用戶端請求的時候會根據斷點判斷這個請求是否符合要求,如果符合要求,經過過濾工序,才真正轉發到配置好的url連結上
網關也可以叢集,這樣更加高可用
另外Spring Cloud Gateway是java體系的,是以可以spring內建非常容易,這個很容易讓大家接受,但路由配置是寫在代碼的配置檔案中的。
如果需要動态配置,每次修改路由不需要改代碼,釋出一堆麻煩的步驟,那麼需要結合配置中心來存儲配置,那麼我們的配置隻要路由配置在配置中心就可以了,現在有很多開源的配置中心比如nacos(阿裡開源),apollo(攜程開源),nacos和appllo用戶端會通過定時長輪詢的方式拉取配置資料并将資料同步到用戶端服務的記憶體中,這樣的話,路由配置就可以準實時的修改并在服務中生效,無需釋出代碼,重新開機的過程
當然,網關還有kong,國産的APISIX,号稱速度最快的網關krakend,用go語言編寫: https://www.krakend.io/,這些還沒有去研究,不過kong在國内的流行度很高,看到很多大廠都在用,kong=nginx+openresty+lua
lua是個好東西,要好好學學