Spring Cloud版——電影售票系統<七>使用 Zuul 構建微服務網關

   GitHub地址:https://github.com/leebingbin/SpringCloud.MovieTicketinghtml

 

 1、爲什麼要用微服務網關

    不一樣的微服務通常會有不一樣的網絡地址,而外部客戶端(如,移動APP)可能須要調用多個服務的接口才能完成業務需求。這樣就會有如下的問題:git

* 客戶端會屢次請求不一樣的微服務,增長了客戶端的複雜性。
* 存在跨域請求,在必定場景下處理相對複雜
* 認證複雜,每一個服務都須要獨立的認證
* 難以重構,隨着項目的迭代,可能須要從新劃分微服務。(如,可能將一個微服務拆分多個或者多個微服務合併成一個)
* 某些微服務可能使用了防火牆/瀏覽器不友好的協議,直接訪問會有必定的困難

    以上問題可藉助微服務網關解決。微服務網關是介於客戶端和服務端之間的中間層,全部的外部請求都會先通過微服務網關。微服務網關封裝了應用程序的內部結構,客戶端只須要跟網關交互,而無須直接調用特定微服務的接口。不只開發能夠獲得簡化,使用微服務網關還有如下優勢:github

* 易於監控:可在微服務網關收集監控數據並將其推送到外部系統進行分析
* 易於認證:可在微服務網關上進行認證,而後再將請求轉發到後端的微服務,而無須在每一個微服務中進行認證
* 減小了客戶端與各個微服務之間的交互次數

2、Zuul 簡介

    Zuul 是 Netflix 開源的微服務網關,它能夠和 Eureka 、Ribbon、Hystrix 等組件配合使用。Zuul 的核心是一系列的過濾器,這些過濾器能夠完成如下功能。後端

    

* 身份認證與安全:識別每一個資源的驗證要求,並拒絕那些與要求不符的請求
* 審查與監控:在邊緣位置追蹤有意義的數據和統計結果,從而帶來精確的生產視圖
* 動態路由:動態地將請求路由到不一樣的後端集羣
* 壓力測試:逐漸增長指向集羣的流量,以瞭解性能
* 負載分配:爲每一種負載類型分配對應容量,並棄用超出限定值的請求
* 靜態響應處理:在邊緣位置直接創建部分響應,從而避免其轉發到內部集羣
* 多區域彈性:跨越 AWS Region 進行請求路由,旨在實現 ELB (Elastic Load Balancing) 使用的多樣化,
以及讓系統的邊緣更貼近系統的使用者

 

    Spring Cloud 對 Zuul 進行了整合與加強。目前,Zuul 使用的默認 HTTP 客戶端是 Apache HTTP Client , 也可使用 RestClient 或者 okhttp3.OKHttpClient。若是想要使用 RestClient,能夠設置 ribbon.restclient.enabled=true ;想要使用 okhttp3.OKHttpClient,能夠設置 ribbon.okhttp.enabled=true 。跨域

    參考資料:瀏覽器

    Netflix 如何使用 Zuul : http://github.com/Netflix/zuul/wiki/How-We-Use-Zuul-At-Netflix安全

 

 

 

 

 

本文爲博主原創文章,轉載請註明出處!bash

https://my.oschina.net/u/3375733/blog/網絡

相關文章
相關標籤/搜索