`

Springcloud 微服务架构-路由网关Spring Cloud Gateway

阅读更多
  1. 新建一个moudle 名为gateway

pom依赖如下,注意不要添加 spring-boot-starter-web 否则会启动失败

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

 

  1. 启动类添加注解 @EnableEurekaClient
  2. 配置文件,具体各个配置是什么意思,我在配置文件已经写的很清楚了,就不再赘述了,如下:
  3. server:
      port: 8888
    spring:
      profiles:
        active: path-route      #使用哪个配置文件
      application:
        name: HELLO-GATEWAY     #服务名
    
    ---         #三个横线表示再创建一个配置文件
    spring:
      profiles: path-route            #配置文件名 和 spring.profiles.active 相对应
      cloud:
        #设置路由规则
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01        #代表从注册中心获取服务,且以lb(load-balance)负载均衡方式转发
            predicates:                     #断言
            - Path=/service01/**            #表示将以/service01/**开头的请求转发到uri为lb://MICROSERVICE01的地址上
            - After=2019-06-20T00:00:00.789-07:00[America/Denver] #表示在该时间点之后的时间,发出的请求会被路由到uri
    #        filters:
    #        - StripPrefix=1                #表示将Path的路径/service01在转发前去掉,如果设置StripPrefix=2,表示将/service01/*去掉 以此类推... 同时将spring.cloud.gateway.discovery.locator.enabled改为false,如果不改的话,之前的localhost:8799/client01/test01这样的请求地址也能正常访问,因为这时为每个服务创建了2个router
    
          discovery:
            locator:
              #表示gateway开启服务注册和发现功能,
              #并且spring cloud gateway自动根据服务发现为每一个服务创建了一个router,这个router将以服务名开头的请求路径转发到对应的服务
              enabled: true
              #表示将请求路径的服务名配置改成小写  因为服务注册的时候,向注册中心注册时将服务名转成大写的了
              lower-case-service-id: true
              
    ---
    spring:
      profiles: after-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示在该时间点之后的时间,发出的请求会被路由到uri
            - After=2019-06-20T00:00:00.789-07:00[America/Denver]
    #        - After=1561098916602  也可以用long类型的时间戳格式
    
    ---
    spring:
      profiles: before-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示在该时间点之前的时间,发出的请求会被路由到uri
            - Before=2019-12-20T00:00:00.789-07:00[America/Denver]
    
    ---
    spring:
      profiles: between-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示在该时间点之间的时间,发出的请求会被路由到uri
            - Between=2019-02-20T00:00:00.789-07:00[America/Denver],2019-12-20T00:00:00.789-07:00[America/Denver]
    
    ---
    spring:
      profiles: header-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示当请求的请求头中有 key=Hello,value=World,发出的请求会被路由到uri
            - Header=Hello, World
            #可以是正则表达式 例如 - Header=Hello, \d+
    
    ---
    spring:
      profiles: cookie-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示当请求带有名为Hello,值为World的Cookie时,发出的请求会被路由到uri
            - Cookie=Hello, World
    
    ---
    spring:
      profiles: host-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示当请求带有host为**.host.test时,发出的请求会被路由到uri
            - Host=**.host.test
    
    ---
    spring:
      profiles: method-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示GET请求,都会被路由到uri
            - Method=GET
    
    ---
    spring:
      profiles: query-route
      cloud:
        gateway:
          routes:
          - id: gateway
            uri: lb://MICROSERVICE01
            predicates:
            #表示请求带有参数key=a, value=b时,该请求会被路由到uri
            - Query=a, b
    
     根据配置文件的不同,请求路径也会不一样,由于本文只是涉及gateway的简单使用,我也没有做什么太深入的研究,就到这里啦。
分享到:
评论

相关推荐

    SpringCloud微服务架构笔记-共四部分四个PDF文件

    本套笔记全面覆盖了SpringCloud微服务架构的关键知识点,从理论到实践,帮助读者深入了解并掌握微服务设计原则和SpringCloud的实现方式,对于想要在微服务领域深化学习的Java开发者来说是一份宝贵的资料。

    SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案.rar.rar

    总而言之,SpringCloud微服务分布式架构开发实战课程涵盖了微服务架构的关键技术,通过作业和参考答案,你可以加深对SpringCloud组件的理解,提升微服务应用的开发能力。在实践中不断学习,才能更好地应对复杂的...

    springcloud Gateway网关-压测用.zip

    SpringCloud Gateway作为一款现代化的微服务网关,它在企业级分布式系统中扮演着至关重要的角色。这个名为"springcloud Gateway网关-压测用.zip"的压缩包包含了一个用于性能测试的配置,目的是评估和优化Gateway的...

    spring cloud 微服务架构集成-spring-cloud-framework.zip

    10. **Spring Cloud Gateway**:新一代API网关 - Spring Cloud Netflix的Zuul在新版本中已被Gateway取代,Gateway具有更强大和灵活的路由规则,以及更好的性能。 了解并熟练掌握这些核心组件的使用,是构建和维护...

    【SpringCloud】最全最细!微服务框架-springcloud微服务架构

    &lt;artifactId&gt;spring-cloud-starter-gateway ``` 然后配置路由规则: ```yaml spring: cloud: gateway: routes: - id: service_route uri: lb://service-provider predicates: - Path=/api/service/** ```...

    spring-cloud-gateway-demo.zip

    Spring Cloud Gateway 是一款基于 Spring Framework 5 和 Spring Boot 2 设计的现代化微服务路由网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。在本示例 "spring-cloud-gateway-demo.zip" 中...

    第六期微服务架构-SpringCloudAlibaba代码和文档.zip

    《SpringCloud Alibaba深度解析与实践指南》 在现代软件开发领域,微服务架构已经成为构建大型分布式系统的主流方式。Spring Cloud Alibaba作为Spring Cloud生态中的重要组件,为企业级开发提供了丰富的微服务解决...

    springcloud 微服务 。pdf

    SpringCloud基于SpringBoot,简化了微服务架构的搭建和管理,使得开发者可以快速地在分布式环境中实现服务发现、负载均衡、断路器、配置中心、API网关等功能。 一、SpringCloud的核心组件: 1. Eureka:服务注册与...

    springcloud 微服务架构

    SpringCloud微服务架构是当前企业级应用开发中的热门选择,它提供了一整套服务发现、配置管理、服务间通信以及负载均衡等工具,使得开发者能够快速构建复杂的分布式系统。在这个框架下,我们可以利用Eureka作为注册...

    SpringCloud微服务、链路跟踪、分布式配置、分布式网关

    5. **分布式网关**:SpringCloud Gateway作为SpringCloud生态中的新一代API网关,它基于Spring Framework和Spring Boot设计,提供了路由转发、过滤器链等功能。开发者可以通过Gateway统一处理所有外部请求,实现认证...

    疯狂Spring Cloud微服务架构实战视频教程

    - **Spring Cloud Gateway**:新一代的API网关,替代Zuul,提供了更丰富的路由规则和过滤器支持。 - **Spring Cloud Sleuth**:用于追踪链路,支持Zipkin、Jaeger等多种追踪系统集成。 - **Spring Cloud Stream**:...

    SpringCloud微服务架构.rar

    这个压缩包“SpringCloud微服务架构.rar”很可能包含了关于如何使用SpringCloud来搭建和管理微服务架构的相关资料。 SpringCloud的核心组件包括以下几点: 1. **Eureka**:服务注册与发现。Eureka是Netflix的一个...

    springcloud微服务技术栈-个人笔记文档(基础篇)

    SpringCloud 是一套完整的微服务解决方案,它为开发者提供了构建分布式系统所需的工具,包括服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等。...

    SpringCloud微服务负载均衡与网关

    接下来是“SpringCloud API网关”,它在微服务架构中扮演着至关重要的角色。API网关作为系统的单一入口点,负责处理所有客户端的请求,然后根据请求的目标路由到相应的微服务。Zuul和Gateway是SpringCloud提供的两种...

    SpringCloud微服务架构技术分享文档.zip

    文档中可能还会包含SpringCloud Gateway、SpringCloud Stream、SpringCloud Data Flow等相关组件的介绍,这些都是SpringCloud生态中重要的组成部分,分别用于构建API网关、处理消息和数据流的管理。 总的来说,...

    SpringCloud + Vue 微服务项目-springcloud-vue-project.zip

    4. 路由管理:Vue.js的router模块进行页面路由管理,SpringCloud API Gateway处理不同服务的路由规则。 5. 实时通讯:通过WebSocket实现前后端的实时通信,例如SpringCloud的Sleuth模块可以配合Zipkin实现服务追踪...

    Springboot+SpringCloud微服务架构demo

    通过这个"Springboot+SpringCloud微服务架构demo",学习者可以了解微服务的基本架构和组件,理解如何使用Spring Boot和Spring Cloud来构建分布式系统,同时也能掌握Eureka、Gateway和Config等关键组件的用法。...

    最新Spring Cloud Gateway 官方参考指南-中文版-3.x

    引入Spring Cloud Gateway到项目中,首先需要添加Spring Cloud的统一版本依赖管理,这可以通过引入`spring-cloud-dependencies`的BOM(Bill of Materials)来实现,无需显式指定每个Spring Cloud组件的版本。...

    藏经阁-spring cloud微服务架构设计与开发实践-222.pdf

    - **Spring Cloud Gateway**:新一代的API网关,提供路由、过滤器、限流等功能,比Zuul更强大且性能更好。 4. 微服务选型 - **Netflix组件与Spring Cloud Alibaba对比**:Netflix组件是Spring Cloud初期常用的...

    SpringCloud微服务版本天天吃货在线购物平台,SpringCloud Greenwich.-foodie.zip

    本文将深入探讨如何利用SpringCloud Greenwich构建一个名为“天天吃货”的在线购物平台,帮助读者掌握微服务架构下的系统设计与开发。 1. SpringCloud概述: SpringCloud是基于Spring Boot的微服务框架,提供了一...

Global site tag (gtag.js) - Google Analytics