Spring Cloud(三)Zuul网关

一、引言

  写这篇之前,也先介绍一下应用背景吧,大家应该或多或少接触过nginx做反向代理吧?Zuul网关其实也是帮我做了这么一层工作,假设我们的项目有几十个微服务,每个微服务你都记录地址的话,难受不?所以我们需要一个统一的入口,也就是网关来给我们做请求分发,那么对外调用我统一经过网关,还可以做一些身份校验,黑白名单过滤等工作,是不是很方便呀~

二、Zuul网关实例

  开搞开搞,同样也是需要先新建一个Spring Boot工程,然后开始做下面的配置:

pom.xml

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <groupId>com.zhbf</groupId>
 6     <artifactId>zuul</artifactId>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <name>zuul</name>
 9     <description>网关服务【有梦想的肥宅】</description>
10 
11     <parent>
12         <groupId>org.springframework.boot</groupId>
13         <artifactId>spring-boot-starter-parent</artifactId>
14         <version>1.5.6.RELEASE</version>
15         <relativePath/>
16     </parent>
17 
18     <properties>
19         <java.version>1.8</java.version>
20         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
22         <spring-boot.version>1.5.6.RELEASE</spring-boot.version><!--Spring Boot版本-->
23         <spring-cloud.version>1.4.6.RELEASE</spring-cloud.version><!--Spring Cloud版本-->
24     </properties>
25 
26     <dependencyManagement>
27         <dependencies>
28             <!--指定下载源和使用Spring Boot的版本-->
29             <dependency>
30                 <groupId>org.springframework.boot</groupId>
31                 <artifactId>spring-boot-dependencies</artifactId>
32                 <version>${spring-boot.version}</version>
33                 <type>pom</type>
34                 <scope>import</scope>
35             </dependency>
36             <!--指定下载源和使用Spring Cloud的版本-->
37             <dependency>
38                 <groupId>org.springframework.cloud</groupId>
39                 <artifactId>spring-cloud-dependencies</artifactId>
40                 <version>Edgware.SR5</version>
41                 <type>pom</type>
42                 <scope>import</scope>
43             </dependency>
44         </dependencies>
45     </dependencyManagement>
46 
47 
48     <dependencies>
49         <!--引入Spring Boot依赖-->
50         <dependency>
51             <groupId>org.springframework.boot</groupId>
52             <artifactId>spring-boot-starter</artifactId>
53         </dependency>
54         <!--引入Spring Cloud的Eureka依赖-->
55         <dependency>
56             <groupId>org.springframework.cloud</groupId>
57             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
58             <version>${spring-cloud.version}</version>
59         </dependency>
60         <!--引入zuul网关依赖-->
61         <dependency>
62             <groupId>org.springframework.cloud</groupId>
63             <artifactId>spring-cloud-starter-zuul</artifactId>
64         </dependency>
65     </dependencies>
66 
67 </project>
View Code
复制代码

application.yml

复制代码
#应用名称
spring:
    application:
        name: ZUUL

#服务端口
server:
  port: 9093

#注册进eureka
eureka:
    client:
        service-url:
            defaultZone: http://${eureka.instance.hostname}:9090/eureka
        register-with-eureka: true
        fetch-registry: true
    instance:
        hostname: 127.0.0.1


#配置网关转发规则
zuul:
  routes:
    api-order: #表示当请求127.0.0.1:9093/order/开头的请求时,会通过eureka去找到OREDER-SERVER对应的实例做请求分发
      path: /order/**
      service-id: OREDER-SERVER
    api-gds:
      path: /gds/**
      service-id: GDS-SERVER
复制代码

ZuulApplication.java【启动类】

复制代码
@SpringBootApplication
@EnableZuulProxy //开启zuul网关
@EnableDiscoveryClient //服务注册发现
public class ZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }

}
复制代码

启动工程并测试

 

posted @   有梦想的肥宅  阅读(96)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2019-09-09 程序员必须掌握的600个英语单词
2019-09-09 Spring学习(二)Spring IoC 和 DI 简介
2019-09-09 Spring学习(一)初识Spring
点击右上角即可分享
微信分享提示