【SpringCloud教程】3.SpringCloud Gateway网关

简介

网关是微服务的入口,将跨域处理、安全校验、黑白名单、过滤器、路由转发等交给网关处理,服务只需要关注业务层。这一点和Nginx很像,相当于客户端先请求网关,网关再转发到服务。

Gateway和Zuul的区别:

Gateway属于Spring团队开发。Zuul是Netflix公司的项目。

Gateway是通过SpringWebflux提供的Netty非阻塞式api,Zuul是Servlet封装的阻塞式api,性能不好。

Gateway和Nginx的区别:Gateway是Java开发方便第二次更改,Nginx第二次开发需要额外学习lua脚本。

Gateway实现转发功能

与注册中心不同的是需要去掉spring-boot-starter-web引入spring-boot-starter-webflux,不然会报错:Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency.

pom.xml配置如下


    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <!--Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.4.2</version>
            </dependency>
            <!--Spring Cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring Cloud Alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

application.yml 配置如下:

server:
  port: 8080

spring:
  application:
    name: gateway
  cloud:
    # nacos 配置中心
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      # 配置路由
      routes:
        # id 保证唯一
        - id: csdn
          # 配置跳转路径(这里以我的博客首页为例)
          uri: https://blog.csdn.net/qq_37493888/
          # 路由条件
          predicates:
            - Path=/csdn

此时在浏览器输入:http://localhost:8080/csdn,即可跳转到csdn

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

terrybg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值