声明:本站文章均为作者个人原创,图片均为实际截图。如有需要请收藏网站,禁止转载,谢谢配合!!!

网关作用

对用户请求做身份认证、权限校验
对用户请求路由到微服务,并实现负载均衡
对用户请求做限流

在SpringCloud中网关的实现有两种:

zuul 和 gateway

zuul基于Servlet的实现,属于阻塞式编程
gateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具有更好的性能

本文主要介绍gateway的实现方式

1、创建新的模块gateway,并引入SpringCloudGateway和nacos的服务发现依赖

        <!--nacos服务注册发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--网关gateway依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.1.3</version>
        </dependency>

2、配置网关

server:
  port: 10010
spring:
  application:
    name: gateway
  cloud:
      nacos:
        server-addr: localhost:8848 # nacos服务地址
      gateway:
        routes:
          - id: user-service
            uri: lb://userservice
            predicates:
              - Path=/user/**
          - id: order-service
            uri: lb://orderservice
            predicates:
                - Path=/order/**

用户群 -> Gateway -> 匹配路由 -> 拉取服务列表 -> 负载均衡 -> 发送请求至各服务