溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Zuul 配置

發(fā)布時(shí)間:2020-07-30 12:41:54 來源:網(wǎng)絡(luò) 閱讀:619 作者:16521544193 欄目:編程語言

概述:zuul底層是基于servlet,是由一系列的filter鏈構(gòu)成。

1、路由配置?官網(wǎng) www.1b23.com

a、單例serverId映射

zuul:
??routes:
????client-a:
??????path:?/client/**
??????serviceId:?client-a

意思是,以/client/**為端點(diǎn)路徑的服務(wù)都映射到client-a,這種配置還可以簡寫成下面的格式,二者效果完全一致:

zuul:
??routes:
????client-a:?/client/**

還有一種更粗暴的方式,就是映射的serverId都不用寫,如下:

zuul:
??routes:
????client-a:

這種配置,zuul會(huì)為client-a添加一個(gè)默認(rèn)的映射規(guī)則,即:/client/**,相當(dāng)于上面的第一種配置方式。

?

b、單例URL映射

這種配置意思就是,網(wǎng)關(guān)路由到具體的服務(wù)地址,即:將serverId替換成url,如下:

zuul:
??routes:
????client-a:
??????path:?/client/**
??????url:?http://localhost:7070?#client-a的地址

?

c、多實(shí)例路由

默認(rèn)情況下zuul會(huì)使用eureka中集成的負(fù)載均衡功能,如果要使用ribbon的負(fù)載均衡,就需要指定serverId,這個(gè)操作一定要禁用掉ribbon使用eureka,具體操作如下:

Zuul  配置

zuul:
??routes:
????ribbon-route:
??????path:?/ribbon/**
??????serviceId:?ribbon-routeribbon:
??eureka:
????enabled:?false??#禁止Ribbon使用Eurekaribbon-route:??ribbon:
????NIWSServerListClassName:?com.netflix.loadbalancer.ConfigurationBasedServerList?#定義獲取服務(wù)列表方法
????NFLoadBalancerRuleClassName:?com.netflix.loadbalancer.RandomRule?????#Ribbon?LB?Strategy?使用隨機(jī)負(fù)載策略
????listOfServers:?localhost:7070,localhost:7071?????#client?services?for?Ribbon?LB?指定服務(wù)地址

Zuul  配置

?

d、forword本地跳轉(zhuǎn)

假如在網(wǎng)關(guān)服務(wù)中,需要做一些邏輯處理,可以在配置url時(shí),添加forword選項(xiàng):

zuul:
??routes:
????client-a:
??????path:?/client/**
??????url:?forward:/client?#跳轉(zhuǎn)到網(wǎng)關(guān)服務(wù)中@GetMapping("/client")端點(diǎn)

?

e、相同路徑加載

Zuul  配置

zuul:
??routes:????client-b:
??????path:?/client/**
??????serviceId:?client-b????client-a:
??????path:?/client/**
??????serviceId:?client-a

Zuul  配置

從上面的配置文件,可以看出,配置了兩個(gè)工程的路由,即:client-a工程,client-b工程,但是二者的path路徑是一致的,這種情況下,在加載訪問的時(shí)候,后者會(huì)覆蓋前者。

?

f、路由通配符

規(guī)則說明示例
/**匹配任意數(shù)量的路徑與字符/client/add, /client/update, client/a, client/add/a, client/update/a/b
/*匹配任意數(shù)的字符/client/add, /client/update, client/a
/?匹配單個(gè)字符/client/a

?

2、功能配置

a、屏蔽服務(wù)、屏蔽路徑

zuul:??ignored-services:?client-b????#忽略的服務(wù),防止服務(wù)侵入??ignored-patterns:?/**/div/**??#忽略的接口,屏蔽接口
??routes:
????client-a:?/client/**

加上?ignored-services 與?ignored-patterns?之后,zuul在拉取服務(wù)列表的時(shí)候,創(chuàng)建映射規(guī)則的時(shí)候,就會(huì)忽略掉client-b服務(wù)和/**/div/**接口。

?

b、過濾掉敏感請(qǐng)求頭

正常我們使用HTTP請(qǐng)求服務(wù),在header添加值進(jìn)行傳遞,是很正常的一件事,協(xié)議的一些基本認(rèn)證也都在header,比如cookie,或者把登錄認(rèn)證通過后的用戶信息base64編碼后,放在authorization里面,在系統(tǒng)內(nèi)這種傳遞是沒有問題的,但是如果系統(tǒng)與外部進(jìn)行交互,這種可能就會(huì)出現(xiàn)異常,畢竟也要防患于未然,這時(shí)可以在zuul里邊指定敏感頭信息,切斷它與下游的交互,如下:

Zuul  配置

zuul:
??routes:
????client-a:
??????path:?/client/**??????sensitiveHeaders:?Cookie,Set-Cookie,Authorization??????serviceId:?client-a

Zuul  配置

?

c、重定向

在實(shí)際企業(yè)級(jí)項(xiàng)目中,很多操作都是需要用戶登錄后,才可以進(jìn)行操作的,為了防止用戶登錄成功后,在重定向的時(shí)候,將對(duì)應(yīng)的服務(wù)地址暴露給用戶,可以設(shè)置一個(gè)頭,如下:

zuul:
??add-host-header:?true?????????#重定向header問題
??routes:
????client-a:?/client/**

?

d、重試機(jī)制

在生產(chǎn)環(huán)境中,可能由于各種原因,導(dǎo)致偶然請(qǐng)求失敗,可以使用zuul結(jié)合ribbon做重試操作,如下:

Zuul  配置

zuul:?
??retryable:?true?#開啟重試

ribbon:
??MaxAutoRetries:?1?#同一個(gè)服務(wù)重試的次數(shù)(除去首次)
??MaxAutoRetriesNextServer:?1??#切換相同服務(wù)數(shù)量

Zuul  配置

但是,這個(gè)功能要慎用,因?yàn)橛行┙涌谛枰WC冪等性。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI