一, 简介
Zuul 路由转发和过滤器, zuul默认和Ribbon结合实现了负载均衡的功能.
二, 新建 Zuul 服务 cloud-e
1, cloud-e pom.xml
<?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.gy.cloud</groupId>
<artifactId>cloud</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>cloud-e</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Demo project for Service Zuul</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.cloud</groupId>-->
<!--<artifactId>spring-cloud-starter-gateway</artifactId>-->
<!--</dependency>-->
</dependencies>
</project>
2, cloud-e application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8765
spring:
application:
name: service-e
# cloud:
# gateway:
# discovery:
# locator:
# enabled: true
# routes:
# - id: api-b
# uri: http://localhost:8762/
# predicates:
# - Path=/api-b/**
# filters:
# - StripPrefix=1
# - id: api-c
# uri: lb://service-c
# predicates:
# - Path=/api-c/**
# filters:
# - StripPrefix=1
zuul:
routes:
api-b:
path: /api-b/**
serviceId: service-b
api-c:
path: /api-c/**
serviceId: service-c
3, cloud-e CloudEApplication
package com.gy.cloud.cloude;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@EnableZuulProxy
@SpringBootApplication
public class CloudEApplication {
public static void main(String[] args) {
SpringApplication.run(CloudEApplication.class, args);
System.out.println("=== 路由网关服务E启动成功 ===");
}
}
4, 启动服务 cloud-e , 访问 : http://localhost:8765/api-b/hi , http://localhost:8765/api-c/hi
三, 总结
Zuul 主要负责服务接口转发, 这样整个服务只需要请求 Zuul 服务接口即可;
spring boot 的版本一定是 2.0.3.RELEASE , 最新版的 spring boot 集成 Zuul 启动就报错;
学习文档
方志朋的博客 : https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f5-zuul/
项目源码: https://gitee.com/ge.yang/spring-demo/tree/master/cloud