概述
Zuul包含了對請求的
路由
和過濾
兩個最主要的功能:其中路由功能負責將外部請求轉發到具體的微服務實例上,是實現外部訪問統一入口的基礎;
而過濾器功能則負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎。
Zuul和Eureka進行整合,將Zuul自身註冊爲Eureka服務治理下的應用,同時從Eureka中獲得其他微服務的消息,也即以後的訪問微服務都是通過Zuul跳轉後獲得。
注意:Zuul服務最終還是會註冊進Eureka
提供 = 代理 + 路由 + 過濾 三大功能
路由基本配置
新建Module模塊【microservicecloud-zuul-gateway-9527】
POM
<!--zuul路由網關-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<!-- 將微服務provider註冊進Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
YML
server:
port: 9527
spring:
application:
name: microservicecloud-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
info:
app.name: microcloud-gateway
company.name: www.demo.com
build.artifactId: $project.artifactId$
build.version: $project.version$
hosts修改
C:\Windows\System32\drivers\etc路徑下的hosts文件,新增如下內容:
127.0.0.1 myzuul.com
主啓動類
主啓動類添加註解@EnableZuulProxy
啓動
三個eureka集羣
一個服務提供類microservicecloud-provider-dept-8001
一個路由
測試
不用路由:http://localhost:8001/dept/get/2
啓用路由:http://myzuul.com:9527/microservicecloud-dept/dept/get/2
路由訪問映射規則
修改microservicecloud-zuul-gateway-9527模塊,做真實微服務名的映射,
原本是通過http://myzuul.com:9527/microservicecloud-dept/dept/get/2訪問,
現在通過http://myzuul.com:9527/mydept/dept/get/2訪問
yml
zuul:
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
但是隻在yml文件中這樣配置的話,原路徑和新路徑都可以訪問成功,現在要使原路徑訪問方式失效、
原真實服務名忽略
yml添加配置
# 忽略特定的服務名
zuul:
ignored-services: microservicecloud-dept
# 若想忽略所有的原真實服務名,添加如下配置
zuul:
ignored-services: "*"
設置統一公共前綴
yml添加配置,通過http://myzuul.com:9527/shinkaDemo/mydept/dept/get/2可訪問
zuul:
prefix: /shinkaDemo