zuul 是netflix開源的一個API Gateway 服務器, 本質上是一個web servlet應用。
在雲平台上提供動態路由,監控,彈性,安全等邊緣服務的框架。相當於是設備和 Netflix 流應用的 Web 網站后端所有請求的前門。主要功能是路由轉發和過濾器。
Zuul可以通過加載動態過濾機制,從而實現以下各項功能:
驗證與安全保障: 識別面向各類資源的驗證要求並拒絕那些與要求不符的請求。
審查與監控: 在邊緣位置追蹤有意義數據及統計結果,從而為我們帶來准確的生產狀態結論。
動態路由: 以動態方式根據需要將請求路由至不同后端集群處。
壓力測試: 逐漸增加指向集群的負載流量,從而計算性能水平。
負載分配: 為每一種負載類型分配對應容量,並棄用超出限定值的請求。
靜態響應處理: 在邊緣位置直接建立部分響應,從而避免其流入內部集群。
多區域彈性: 跨越AWS區域進行請求路由,旨在實現ELB使用多樣化並保證邊緣位置與使用者盡可能接近。
除此之外,Netflix公司還利用Zuul的功能通過金絲雀版本實現精確路由與壓力測試。
Zuul中定義了四種標准過濾器類型,這些過濾器類型對應於請求的典型生命周期。
PRE:這種過濾器在請求被路由之前調用。我們可利用這種過濾器實現身份驗證、在集群中選擇請求的微服務、記錄調試信息等。
ROUTING:這種過濾器將請求路由到微服務。這種過濾器用於構建發送給微服務的請求,並使用Apache HttpClient或Netfilx Ribbon請求微服務。
POST:這種過濾器在路由到微服務以后執行。這種過濾器可用來為響應添加標准的HTTP Header、收集統計信息和指標、將響應從微服務發送給客戶端等。
ERROR:在其他階段發生錯誤時執行該過濾器。
搭建Zuul
1、New Model -> Spring Initializer -> Next -> Next -> Web(Web)、Cloud Discovery(Eureka Discovery)、Cloud Routing(Zuul)-> Next ->Finish
2、在ZuulApplication.class中新增@EnableZuulProx、@EnableEurekaClient 這兩個注解
3、application.yml 文件:
server:
port: 6666
spring:
application:
name: client-zuul
eureka:
client:
service-url:
defaultZone: http://peer1:1122/eureka/
# 這里寫一個都行,因為 Eureka Server 是相互注冊,高可用注冊中心
zuul:
routes:
api-a:
path: /api-a/**
serviceId: client-ribbon
api-b:
path: /api-b/**
serviceId: client-feign
4、依次啟動 注冊中心、服務提供者(eureka-client)、服務消費者(client-ribbon、client-feign)、網關(client-zuul)
5、注意注意,最后一張圖片,zuul無法訪問!!!
再換一個瀏覽器訪問試試:
原來是這個端口被常用其他用途,所以這個端口號不行。
6、在application.yml文件中改一下端口號(以防都被重,直接改成9000了):
原文:https://blog.csdn.net/true1cc/article/details/81110753