1.概述
Zuul包含了對請求的路由和過濾的主要功能:
-
路由功能
主要負責将外部請求轉發到具體的微服務上,是實作外部通路入口的基礎
-
過濾功能
負責對請求的處理過程進行幹預,是實作請求校驗、服務聚合等功能的基礎
Zuul與Eureka進行整合,将Zuul自身注冊為Eurekad的服務治理下的應用,同時從Eureka中獲得其他微服務的資訊,也即以後的微服務通路都是通過Zuul跳轉後獲得。
三大功能: 代理、路由、過濾
2.路由基本配置
2.1引入相關pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jsp.springcloud</groupId>
<artifactId>servicecloud</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jsp.springcloud</groupId>
<artifactId>servicecloud-zull-gateway-9527</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>servicecloud-zull-gateway-9527</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- eureka 用戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<!-- 主管監控和配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2application.properties
server.port=9527
spring.application.name=servicecloud-zuul-gateway
#用戶端注冊進eureka服務清單
#eureka.client.service-url.defaultZone= http://localhost:7001/eureka
eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
#自定義服務名稱資訊
eureka.instance.instance-id=gateway-9527.com
#通路路徑顯示ip位址
eureka.instance.prefer-ip-address=true
#eureka 超連結的資訊
info.app.name=jsp-servicecloud
info.company.name=www.jsp.com
info.build.artifactId=$project.artifactId$
info.build.version=$project.version$
#修改路由,不顯示微服務名稱 若多個微服務可以 把服務名替換為 "*"
zuul.routes.mydept.service-id=servicecloud-dept
#zuul.routes.mydept.service-id="*"
zuul.routes.mydept.path=/mydept/**
#忽略通過服務名調用的接口 -== 原路徑無法調用
zuul.ignored-services=servicecloud-dept
#可設定公共字首. 不帶字首無法通路 localhost:9527/jsp/mydept/get/1
zuul.prefix=/jsp
2.3 @EnableZuulProxy注解
在主啟動類上加該注解即可開啟zuul
3. 路由通路映射規則修改
3.1 隐藏真實服務名, 通過特定path調用
3.2 設定統一公共字首 ->必須加上該字首才可以通路到
#修改路由,不顯示微服務名稱 若多個微服務可以 把服務名替換為 "*"
zuul.routes.mydept.service-id=servicecloud-dept
#zuul.routes.mydept.service-id="*"
zuul.routes.mydept.path=/mydept/**
#忽略通過服務名調用的接口 -== 原路徑無法調用
zuul.ignored-services=servicecloud-dept
#可設定公共字首. 不帶字首無法通路 localhost:9527/jsp/mydept/get/1
zuul.prefix=/jsp