為什么需要網關呢?
我們知道我們要進入一個服務本身,很明顯我們沒有特別好的辦法,直接輸入IP地址+端口號,我們知道這樣的做法很糟糕的,這樣的做法大有問題,首先暴露了我們實體機器的IP地址,別人一看你的IP地址就知道服務部署在哪里,讓別人很方便的進行攻擊操作。
第二,我們這么多服務,我們是不是要挨個調用它呀,我們這里假設做了個權限認證,我們每一個客戶訪問的都是跑在不同機器上的不同的JVM上的服務程序,我們每一個服務都需要一個服務認證,這樣做煩不煩呀,明顯是很煩的。
那么我們這時候面臨著這兩個及其總要的問題,這時我們就需要一個辦法解決它們。首先,我們看IP地址的暴露和IP地址寫死后帶來的單點問題,我是不是對這么服務本身我也要動態的維護它服務的列表呀,我需要調用這服務本身,是不是也要一個負載均衡一樣的玩意,
還有關于IP地址暴露的玩意,我是不是需要做一個代理呀,像Nginx的反向代理一樣的東西,還有這玩意上部署公共的模塊,比如所有入口的權限校驗的東西。因此我們現在需要Zuul API網關。它就解決了上面的問題,你想調用某個服務,它會給你映射,把你服務的IP地址映射成
某個路徑,你輸入該路徑,它匹配到了,它就去替你訪問這個服務,它會有個請求轉發的過程,像Nginx一樣,服務機器的實例具體實力,它不會直接去訪問IP,它會去Eureka注冊中心拿到服務的實例ID,即服務的名字。我再次使用客戶端的負載均衡ribbon訪問其中服務實例中的一臺。
API網關主要為了服務本身對外的調用該怎么調用來解決的,還有解決權限校驗的問題,你可以在這里整合調用一系列過濾器的,例如整合shiro,springsecurity之類的東西。
Zuul可以通過加載動態過濾機制,從而實現以下各項功能:
1.驗證與安全保障: 識別面向各類資源的驗證要求并拒絕那些與要求不符的請求。
2.審查與監控: 在邊緣位置追蹤有意義數據及統計結果,從而為我們帶來準確的生產狀態結論。
3.動態路由: 以動態方式根據需要將請求路由至不同后端集群處。
4.壓力測試: 逐漸增加指向集群的負載流量,從而計算性能水平。
5.負載分配: 為每一種負載類型分配對應容量,并棄用超出限定值的請求。
6.靜態響應處理: 在邊緣位置直接建立部分響應,從而避免其流入內部集群。
7.多區域彈性: 跨越AWS區域進行請求路由,旨在實現ELB使用多樣化并保證邊緣位置與使用者盡可能接近。
接著下來進行實戰小Demo
第一步,在原來的工程下,新建一個Zuul模塊,引入依賴,代碼如下:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.3.5.RELEASE</version> </dependency>
網頁題目:SpringCloud實戰之Zuul網關服務-創新互聯
文章起源:http://m.kartarina.com/article34/dscose.html
成都網站建設公司_創新互聯,為您提供網站內鏈、企業網站制作、網站設計公司、網站營銷、App開發、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯