前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天20分钟之spring-cloud-gateway基础一

每天20分钟之spring-cloud-gateway基础一

原创
作者头像
李子健
发布2022-08-16 23:07:16
4590
发布2022-08-16 23:07:16
举报
文章被收录于专栏:每日一善

1 概述

基于springboot和spring webflux,基于netty运行,的http网关服务。

它的目标是替换奈飞的zuul。其实它和zuul2的性能差不多。选择其一即可。

考虑到spring的生态,使用spring-cloud-gateway更加有优势

2 核心概念

Route 网关的基础(断言为真时匹配到路由)

  • id
  • 目标uri
  • 断言
  • 过滤器

Predicate java8的函数,输入类型是webflux的ServerWebExchange,允许开发人员处理http请求

Filter是gateway上的过滤器,可以在请求发出前后做一些业务上的处理

整体流程

image.png
image.png

maven配置

代码语言:txt
复制
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.0.4</version>
        </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-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
    </dependencies>

服务配置

代码语言:txt
复制
spring:
  application:
    name: zuul-gateway-static
  cloud:
    gateway:
      routes:
        - id: test1
          uri: "http://www.example.com/"
          predicates:
            - Path=/abc/**
server:
  port: 10011
  address: 127.0.0.1
debug: true
management:
    endpoint:
      gateway:
        enabled: true
    endpoints:
      web:
        exposure:
          include: "*"
logging:
  config: classpath:logback-spring.xml



#eureka.instance.ip-address=127.0.0.1
#eureka.client.serviceUrl.defaultZone=http://tom:123456@localhost:9010/eureka/
#eureka.instance.preferIpAddress=true
#eureka.instance.instance-id=${spring.application.name}:${server.address}:${server.port}
#eureka.client.healthcheck.enabled=true
#eureka.instance.lease-expiration-duration-in-seconds=20
#eureka.instance.lease-renewal-interval-in-seconds=15

访问页面就可以看到转发的数据 http://127.0.0.1:10011/abc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 概述
  • 2 核心概念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档