1. 程式人生 > >Zuul 網關

Zuul 網關

ip地址 比對 con file 集群 反向代理 虛擬 服務 -c

1、網關的作用

網關可以攔截客戶端所有請求,對該請求進行權限控制,負載均衡、日誌管理、接口調用監控等操作。

1)網關對所有服務會話進行攔截

2)網關安全控制,統一異常處理,XXS、SQL註入

3)權限控制,黑名單和白名單、性能監控、日誌打印

2、過濾器與網關的區別是什麽?

1)過濾器適合於單個tomcat服務器進行攔截請求;

2)網關是攔截整個微服務所有請求;

3)網關分為內網網關和外網網關,外網網關是針對於開放平臺接口;

3、Nginx與Zuul區別

相同點:

1)Zuul和Nginx都可以實現負載均衡、反向代理、過濾請求、實現網關效果。

不同點:

1)Nginx采用C語言編寫,Zuul采用java語言編寫

2)Zuul負載均衡實現:采用ribbon+eureka實現本地負載均衡;

3)Nginx負載均衡實現:采用服務器端實現負載均衡;

4)Nginx比Zuul功能會更加強大,因為Nginx可以整合一些腳本語言(Nginx+Lua)

5)Nginx適合於服務器端負載均衡,也可以實現網關

6)Zuul適合微服務中實現網關,而且使用技術是java語言

7)最好建議nginx+zuul實現網關

nginx用作實現反向代理,zuul對微服務實現網關攔截

反向代理的目的是隱藏真實ip地址

4、網關框架

Kong Kong是基於nginx+lua進行二次開發的方案

使用網關後,不能直接輸入真實地址訪問會員服務/訂單服務,而是運用了反向代理機制,輸入網關地址+服務名稱,程序會自動轉發到對應的會員服務/訂單服務;

f12是捕捉不到真實地址的

公司的token一般放在請求頭裏面,很少以?號傳參

配置完網關後,配置的服務一開始沒啟動,是不會報錯的;只是當你輸入地址後,如果這個地址和你配置的相同,而該服務沒有啟動,才會報錯;

zuul配置能夠使用分布式config實現實時更新,還是得手動刷新

這個手動刷新有點問題:當你在配置文件上面添加內容,他可以生效;但是當你刪減內容,他不會生效,可能是有緩存;

5、bootstrap.yml與application.yml的區別

這個網關我原本用的application.yml,結果一直搜索不到config服務器,一直搜的8888端口;我比對了一下,之前那個config-client就是yml名稱為bootstrap,所有我就也改成了bootstrap,結果就可以了,不曉得是什麽原因。

=》但是螞蟻課堂的用的application.yml卻可以成功

原因如下:

首先如果你在Controller中使用@Value("${fileName}")去加載git上的配置文件屬性,當你用的application.xml時,啟動就會報錯;

結合以上兩個現象得出結論:

1)由於添加了config-client依賴,並且你是application.xml,他的加載順序比較慢,這是還沒有讀取到yml配置中的config-server名稱,所以這個客戶端就會搜索到一個虛擬的config-server,如下

Fetching config from server at: http://localhost:8888

而如果你用的bootstrap.xml,他的執行順序比較快,所以就加載了yml文件,找到了真正的config-server地址

Fetching config from server at: http://LIJ55MM21H39YNQ:9200/

6、網關集群思路

客戶端發送請求統計到Nginx上,再使用Nginx實現反向代理和負載均衡,采用輪詢機制轉發到網關上。

=》集群時如果用谷歌瀏覽器可能負載均衡效果顯示不出來(需要配置參數),可以用火狐瀏覽器。但是我的谷歌瀏覽器卻是可以的

Zuul 網關