• 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);
        }
    
    }

    启动工程并测试

  • 相关阅读:
    [LOJ2288][THUWC2017]大葱的神力:搜索+背包DP+费用流+随机化
    [省选练习]S
    [省选练习]P
    动态淀粉质(划掉)题单&简要题解
    [CF1093G]Multidimensional Queries:线段树
    [BZOJ3199][SDOI2013]escape:半平面交
    计算几何模板
    [洛谷P5106]dkw的lcm:欧拉函数+容斥原理+扩展欧拉定理
    [POJ1637]Sightseeing tour:混合图欧拉回路
    重复旋律:后缀数组+后缀自动机
  • 原文地址:https://www.cnblogs.com/riches/p/15247838.html
Copyright © 2020-2023  润新知