Zuul路由閘道器
阿新 • • 發佈:2021-08-11
Zuul路由閘道器
概述
什麼是zuul?
Zull包含了對請求的路由(用來跳轉的)和過濾兩個最主要功能:
其中路由功能負責將外部請求轉發到具體的微服務例項上,是實現外部訪問統一入口的基礎,而過濾器功能則負責對請求的處理過程進行干預,是實現請求校驗,服務聚合等功能的基礎。Zuul和Eureka進行整合,將Zuul自身註冊為Eureka服務治理下的應用,同時從Eureka中獲得其他服務的訊息,也即以後的訪問微服務都是通過Zuul跳轉後獲得。
注意:Zuul 服務最終還是會註冊進 Eureka
提供:代理 + 路由 + 過濾 三大功能!
Zuul 能幹嘛?
- 路由
- 過濾
官方文件:https://github.com/Netflix/zuul/
入門案例
新建springcloud-zuul模組,並匯入依賴
<dependencies> <!--匯入zuul依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--Hystrix依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--dashboard依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboar</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--Ribbon--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--Eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--實體類+web--> <dependency> <groupId>com.haust</groupId> <artifactId>springcloud-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
application.yml
server: port: 9527 spring: application: name: springcloud-zuul #微服務名稱 # eureka 註冊中心配置 eureka: client: service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ instance: #例項的id instance-id: zuul9527.com prefer-ip-address: true # 顯示ip info: app.name: haust.springcloud # 專案名稱 company.name: 河南科技大學西苑校區 # 公司名稱 # zull 路由閘道器配置 zuul: # 路由相關配置 # 原來訪問路由 eg:http://www.cspStudy.com:9527/springcloud-provider-dept/dept/get/1 # zull路由配置後訪問路由 eg:http://www.cspstudy.com:9527/haust/mydept/dept/get/1 routes: mydept.serviceId: springcloud-provider-dept # eureka註冊中心的服務提供方路由名稱 mydept.path: /mydept/** # 將eureka註冊中心的服務提供方路由名稱 改為自定義路由名稱 # 不能再使用這個路徑訪問了,*: 忽略,隱藏全部的服務名稱~ ignored-services: "*" # 設定公共的字首 prefix: /haust
主啟動類
/**
* @Auther: csp1999
* @Date: 2020/05/20/20:53
* @Description: Zull路由閘道器主啟動類
*/
@SpringBootApplication
@EnableZuulProxy // 開啟Zuul
public class ZuulApplication_9527 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication_9527.class,args);
}
}
測試:
可以看出Zull路由閘道器被註冊到Eureka註冊中心中了!
上圖是沒有經過Zull路由閘道器配置時,服務介面訪問的路由,可以看出直接用微服務(服務提供方)名稱去訪問,這樣不安全,不能將微服務名稱暴露!
所以經過Zull路由閘道器配置後,訪問的路由為:
我們看到,微服務名稱被替換並隱藏,換成了我們自定義的微服務名稱mydept,同時加上了字首haust,這樣就做到了對路由fan訪問的加密處理!
詳情參考springcloud中文社群zuul元件 :https://www.springcloud.cc/spring-cloud-greenwich.html#_router_and_filter_zuul