第三章:Eureka集群路由器Zuul
1,为何需要Zuul(路由)
在微服务架构中,通常会有多个服务提供者。假设一个电商系统,可能会有商品、订单、支付、用户等多个类型的服务,如果前端一个接口需要调用多个服务,可能面临着一些问题:
1,接口服务全部暴露给前端
2,每个服务是否都要鉴权?
3,跨域问题
。。。
为了解决这些问题,当然不只是这些问题需要给服务一个统一的守门员Zuul。你可以完全把他理解成一个守门员。
2,新建module:eureka-gateway
不知道如何创建可以参考上篇文章
3,开启网关
@SpringBootApplication
@EnableZuulProxy
@EnableDiscoveryClient
public class EurekaGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaGatewayApplication.class, args);
}
}
4,增加配置
server:
port: 8080
spring:
application:
name: eurekaGateWay
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka/
pom文件(springboot 版本太高 手动引入一个版本)
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>store</artifactId>
<groupId>com.cloud</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.cloud</groupId>
<artifactId>eureka-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-gateway</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5,启动应用服务
启动eurakaServer
启动eurekaOrder
启动eurekaUser
启动eurekaGateWay