SpringCloud(4) - Zuul路由閘道器
阿新 • • 發佈:2020-07-24
一、概述
Zuul提供了代理、路由、過濾三大功能!
主要的功能:
● 路由:負責將外部請求轉發到具體的微服務例項上,是實現外部訪問統一入口的基礎。
● 過濾:負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎。
Zuul和Eureka進行整合,將Zuul自身註冊為Eureka服務治理下的應用,同時還可以從Eureka中獲取其他微服務的訊息,以後訪問微服務都是通過Zuul跳轉後獲得的。
注意:Zuul服務最終還是會註冊進Eureka
二、程式碼實現
新建一個模組 springcloud-zuul-9207
匯入依賴
<!-- zuul --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!-- 由於zuul 也是微服務所以應該屬於euaeka的客戶端,所以需要引入這個 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!-- web --> <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>
新建application.yaml,進行配置
server: port: 9207 # Spring配置 spring: application: name: springcloud-zuul # Eureka配置 eureka: client: service-url: defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/ instance: instance-id: zuul9207.com prefer-ip-address: true # 隱藏真實IP # zuul路由配置 zuul: routes: # 隱藏服務名稱,通過新的path訪問 mydept.serviceId: springcloud-provider-dept mydept.path: /mydept/** ignored-services: springcloud-provider-dept # 忽略服務,不能再使用這個路徑訪問,"*"可以隱藏全部 prefix: /cyan # 設定統一公共的字首 # 配置資訊 info: app.name: cyan-springcloud company.name: blog.cyan.com
新建一個主啟動類,並新增@EnableZuulProxy 註解
@SpringBootApplication @EnableZuulProxy // 開啟代理 public class ZuulApplication_9207 { public static void main(String[] args) { SpringApplication.run(ZuulApplication_9207.class, args); } }
三、測試
① 配置 serviceId 和 path
只能通過 http://localhost:9207/mydept/dept/get/1與http://localhost:9207/springcloud-provider-dept/dept/get/1訪問
② 增加 ignored-services 忽略配置,可以配置星號 "*" 忽略所有
只能通過 http://localhost:9207/mydept/dept/get/1 訪問
③ 配置prefix增加統一的字首
只能通過 http://localhost:9207/cyan/mydept/dept/get/1 訪問