日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zuul 网关的用途_Zuul网关

發布時間:2024/4/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zuul 网关的用途_Zuul网关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Zuul的主要作用:

1.路由,進行請求轉發。

2.鑒權,進行身份認證(安全)。

3.限流,限制訪問的數量,保證服務器的穩定。

除此之外還有以下作用

4.負載均衡。

5.壓力測試。

6.監控

1.Zuul簡單使用

1.添加依賴

org.springframework.cloud

spring-cloud-starter-netflix-zuul

2.添加@EnableZuulProxy?注解

@EnableZuulProxy

@SpringBootApplication

@EnableDiscoveryClient

public class GatewayApplication {

public static void main(String[] args) {

SpringApplication.run(GatewayApplication.class,args);

}

}

3.配置路由地址

a.配置寫死的地址

zuul:

routes:

user:

path: /user/**

url: http://127.0.0.1:8083

b.結合eureka,動態拉取服務列表,根據服務id找到對應的url。

eureka:

client:

service-url:

defaultZone: http://localhost:8761/eureka

zuul:

routes:

user:

path: /user-service/**

serviceId: user-service

c.簡化版配置,routes的key是服務id,值是映射的地址

zuul:

routes:

user-service: /user-service/**

d.Zuul默認為從eureka拉取服務列表中的所有服務配置了key=服務名,值為 /服務名/** 的routes。也就是說即使不做任何配置,也可以匹配服務名進行訪問服務。

e.某些服務不需要Zuul的默認配置,做以下配置做過濾。

ignored-services:

- customer-service

f.若想去除路由前綴,可做以下配置。strip-prefix: false

zuul:

routes:

#user-service: /user-service/**

user:

path: /user/**

serviceId: user-service

strip-prefix: false

2.ZuulFilter簡介

Zuul最重要的一個功能是實現請求的鑒權,而Zuul實現的方式是通過過濾器,ZuulFilter則是這些過濾器的頂級父類,其中有四個最重要的方法。

//過濾器類型

public abstract String filterType();

//過濾器優先級

public abstract int filterOrder();

//是否啟用過濾器

boolean shouldFilter();

//過濾邏輯

Object run() throws ZuulException;

其中,Zuul的過濾器類型主要有四種,也代表著ZuulFilter的生命周期

pre:請求在路由被執行之前

routing:在路由請求時調用

post:在routing和error過濾器之后調用

error:處理請求時發生錯誤時調用

自定義一個過濾器,程式如下

@Component

public class LoginFilter extends ZuulFilter {

//過濾器類型,分為pre(處理請求頭,身份驗證等),routing(路由轉發),post(路由轉發后的處理),error(處理請求時發生錯誤時調用)

@Override

public String filterType() {

return FilterConstants.PRE_TYPE;

}

//優先級

@Override

public int filterOrder() {

return FilterConstants.SERVLET_DETECTION_FILTER_ORDER-1;

}

//是否啟動過濾攔截

@Override

public boolean shouldFilter() {

return true;

}

//攔截的邏輯

@Override

public Object run() throws ZuulException {

RequestContext context = RequestContext.getCurrentContext();

HttpServletRequest request =context.getRequest();

String token = request.getParameter("access-token");

if (StringUtils.isBlank(token)){

context.setSendZuulResponse(false);

context.setResponseStatusCode(HttpStatus.FORBIDDEN.value());

}

return null;

}

}

3. Zuul的負載均衡和熔斷機制

Zuul集成了Ribbon和Hystrix,只需要做簡單的配置,就可以實現負載均衡和熔斷機制。需要注意的是,hystrix的超時時長要大于RIbbon的超時時長。另外,Zuul中Ribbon的超時時長計算公式如下

ribbonTimeout = (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1);

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 6000

ribbon:

ConnectionTimeOut: 500

ReadTimeOut: 2000

4.Zuul的高可用性

Zuul作為微服務,可以啟動多臺Zuul,自動注冊到eureka上,形成集群。通常可搭配Ngnix服務網關來使用,來實現對Zuul集群的負載均衡調用。

總結

以上是生活随笔為你收集整理的zuul 网关的用途_Zuul网关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。