定義
顧名思義,網(wǎng)關(guān)的作用就是轉(zhuǎn)發(fā)和路由赔嚎,可以把不同路徑的請(qǐng)求轉(zhuǎn)發(fā)到相對(duì)應(yīng)的服務(wù)去皮假,比如 /api-a 轉(zhuǎn)發(fā)到 cloud-service,比如 /api-b 轉(zhuǎn)發(fā)到 cloud-service2 上衩椒。Zuul的作用包括 認(rèn)證蚌父,洞察,壓力測(cè)試毛萌,金絲雀測(cè)試苟弛,動(dòng)態(tài)路由,服務(wù)遷移阁将,負(fù)載脫落膏秫,安全,靜態(tài)響應(yīng)處理做盅,主動(dòng)/主動(dòng)流量管理缤削。
例子
例子源碼請(qǐng)參見(jiàn) https://github.com/githubweili/springcloud/tree/master/spring-cloud-learn/cloud-zuul
首先 pom 文件增加依賴(lài) spring-cloud-starter-netflix-zuul
然后是配置文件 application.yml,routes下面定義兩個(gè)route api-a和 api-b, path 代表的是客服端請(qǐng)求的路徑規(guī)則吹榴,servicedId表示該route轉(zhuǎn)發(fā)的路徑服務(wù)亭敢。
這時(shí)候啟動(dòng)兩臺(tái)服務(wù) cloud-service 和 cloud-servcie2,啟動(dòng) cloud-zuul 服務(wù)图筹。訪問(wèn) localhost:8007/api-a/hello?name=test 響應(yīng)的是 hello test i am from port 8007 說(shuō)明這時(shí)候路由的路徑是 cloud-service帅刀。 訪問(wèn) localhost:8007/api-b/hello?name=test 響應(yīng)的是 hello,2 ,說(shuō)明路由的路徑是 cloud-service2远剩。
Zulu過(guò)濾器
java 代碼 MyFilter.java扣溺,filterType 返回一個(gè)字符串的類(lèi)型,pre:路由之前瓜晤,routing:路由之時(shí)锥余,post:路由之后,error:發(fā)生錯(cuò)誤時(shí)調(diào)用活鹰。filterOrder:時(shí)間過(guò)濾順序哈恰。shouldFilter:需要過(guò)濾的邏輯只估。run:具體的邏輯業(yè)務(wù)。比如例子就是為響應(yīng)加上了header着绷,這時(shí)候訪問(wèn)localhost:8007/api-a/hello?name=test蛔钙,可以看到請(qǐng)求的響應(yīng)頭,header:test荠医。
作者:把代碼寫(xiě)成詩(shī)
版權(quán)所有吁脱,轉(zhuǎn)載請(qǐng)注明出處
歡迎關(guān)注,溝通交流 ?https://github.com/githubweili