Zuul服务网关
中国加油,武汉加油!
篇幅较长,请配合目录观看
项目准备
1. Zuul简介
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制(鉴权)等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
2. 相关链接
3. zuul加入后的架构
4. 快速入门
4.1 新建springcloud-zuul-8484(module-maven)
4.2 导包
<?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">
<parent>
<artifactId>nz1904-springcloud</artifactId>
<groupId>com.wpj</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-zuul-8484</artifactId>
<dependencies>
<!--导入Zuul的依赖 重点的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--测试相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
4.3 编写启动类
package com.wpj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy // 开启Zuul的网关功能
public class ZuulApplication8484 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication8484.class, args);
}
}
4.4 编写application.properties
# 服务端口
server.port=8484
zuul.routes.springcloud-consumer.path=/consumer/**
zuul.routes.springcloud-consumer.url=http://127.0.0.1:8282
4.5 启动7001,8181,8282,8484访问测试
5. 面写服务的路由
5.1 导依赖
<!--导入eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
5.2 修改程序入口
package com.wpj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy // 开启Zuul的网关功能
@EnableEurekaClient
public class ZuulApplication8484 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication8484.class, args);
}
}
5.3 修改application.properties
server.port=8484
zuul.routes.springcloud-consumer.path=/consumer/**
zuul.routes.springcloud-consumer.url=springcloud-consumer
eureka.client.service-url.defaultZone=http://eureka.7001.com:7001/eureka
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=127.0.0.1
eureka.instance.instance-id=springcloud-zuul-8484