zuul 主要提供了對請求的路由與過濾功能。
1,建立springboot工程,匯入依賴
1.8
hoxton.release
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-netflix-zuul
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.cloud
spring-cloud-dependencies
$pom
import
2,啟動類新增註解
//開啟zuul**模式
@enablezuulproxy
3,修改配置檔案
server:
port: 8090
spring:
name: zuulservice
eureka:
client:
service-url:
defaultzone:
到這裡,乙個閘道器服務就可以啟動了,閘道器服務從eureka獲取服務列表,使用者訪問所有服務都走閘道器:微服務名稱/請求路徑
比如 consumer-depart/consumer/depart/list
zuul:
routes:
#自定義路徑來替代微服務名稱 比如 con/consumer/depart/list
#配置路由規則
# /** 匹配任意多級路徑 /abc8080/***/ooo/jjj
# /* 僅可匹配一級路徑 /abc8080/***
# /? 僅可匹配一級路徑,但該路徑只能是乙個字元 /abc8080/x
consumer-depart: /con/**
#配置路徑前輟 abc/con/consumer/depart/list
prefix: /abc
#遮蔽通過指定微服務名稱訪問
# ignored-services: consumer-depart
#遮蔽所有微服務名稱訪問
ignored-services: "*"
#遮蔽指定路徑
ignored-patterns: /**/list/**
#預設情況下,cookie、set-cookie、authorization 敏感請求頭資訊會被 zuul 遮蔽掉
#遮蔽指定的請求頭,設定值替換原有遮蔽的三個資訊,多個以逗號分隔或者["",""]
sensitive-headers: authorization
zuul內建有ribbon,在閘道器配置負載均衡策略,可以yml配置或者**裡
// 設定負載均衡演算法為"隨機演算法"
@bean
public irule loadbalancerule()
/**
* zuul的服務降級類
*/@component
public class consume***llback implements fallbackprovider
/*** 定義降級響應
* @param route 指當前正在處理的微服務名稱
// 關閉當前的response
@override
public void close()
// 定義響應體
@override
public inputstream getbody() throws ioexception
// 定製響應頭
* zuul過濾器,/con 服務必須有token請求頭
*/@component
@slf4j
public class routefilter extends zuulfilter
// 設定當前過濾器在所有過濾器中執行的順序
// 數字越小優先順序越高,可以是負數
@override
public int filterorder()
// 通過過濾後要執行的業務邏輯
@override
public object run() throws zuulexception
// 真正的過濾規則就是定義在這裡的
// 返回true,則通過過濾
@override
public boolean shouldfilter()
return true;
}}
通過對請求限流的方式避免系統遭受「雪崩之災」。
令牌桶限流
流量限制參考
@component
@slf4j
public class bucketroutefilter extends zuulfilter
@override
public int filterorder()
@override
public object run() throws zuulexception
/*** 過濾、限流的實現
* @return
*/@override
public boolean shouldfilter()
return true;
}}
zuul推薦限流方式(spring-cloud-zuul-ratelimit)
原始碼位址
com.marcosbarbero.cloud
spring-cloud-zuul-ratelimit
2.0.5.release
限流策略(限流查驗的物件)型別有:
zuul:
routes:
consumer-service: /aaa/**
# 對限流策略進行配置
ratelimit:
# 開啟zuul限流
enabled: true
repository: redis
#預設 - 針對所有的路由配置的策略,除非特別配置了policy-list:
default-policy-list:
#可選 - 每個重新整理時間視窗對應的請求數量限制
limit: 10
#可選- 每個重新整理時間視窗對應的請求時間限制(秒)
# quota: 1000
# 重新整理時間視窗的時間,預設值 (秒)
refresh-interval: 60
#可選 限流方式
type:
- user
- origin
- url
#指定特定服務的限流策略,覆蓋預設
policy-list:
myserviceid:
limit: 10
quota: 1000
refresh-interval: 60
type:
- user
限流觸發的提示頁面
在 src/main/resources 目錄下再定義新的目錄 public/error,必須是這個目錄名稱。
type:
- user
- origin
- url
#指定特定服務的限流策略,覆蓋預設
policy-list:
myserviceid:
limit: 10
quota: 1000
refresh-interval: 60
type:
- user
限流觸發的提示頁面
在 src/main/resources 目錄下再定義新的目錄 public/error,必須是這個目錄名稱。
在該目錄中定義乙個異常處理頁面,名稱必須是異常狀態碼,副檔名必須為 html。
springcloud學習 eureka服務提供者
上篇博文已經完成註冊中心基本功能,按照上篇博文方式建立新的module,用來配置服務提供者。1 在輸入module名稱時,輸入module名稱為eurekaclient。注意對應配置檔案與上篇的區別 對應的埠號為8010 對應registerwitheureka 表示是否將本應用註冊到eureka服...
springcloud搭建eureka服務
案例建立的工程名為 springcloue parent 02 修改pom檔案 pom org.springframework.cloud spring cloud dependencies greenwich.release pomimport 案例子工程名為 eureka com.yl spri...
SpringCloud 搭建Zuul閘道器服務(七)
閘道器的作用 可以實現負載均衡 路由 日誌 許可權控制 監控 nginx和zuul的區別 閘道器和過濾器的區別 建立springcloud zuul gateway專案將zuul的配置存放在分布式配置中心裡面 引入依賴 org.springframework.cloud spring cloud s...