【SpringCloud】API网关(Spring Cloud Gateway)

本文基于上一篇http://t.csdnimg.cn/q3YrK 使用抽取的方案使用feign的基础上使用Spring Cloud Gateway。

API网关

API网关(简称网关)也是一个服务,通常是后端服务的唯一入口。它就像是整个微服务架构的门面,所有的外部客户端访问都需要经过它来进行调度和过滤。

网关核心功能

权限控制:作为微服务的入口,对用户进行权限校验,如果校验失败则进行拦截。
动态路由:一切请求先经过网关,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务。
负载均衡:当路由的目标服务有多个时,还需要做负载均衡。
限流:请求流量过高时,按照网关中配置微服务能够接受的流量进行放行,避免服务压力过大。

常见网关的实现

Zuul

Zuul是Netflix公司开源的一个API网关组件,是Spring Cloud Netflix子项目的核心组件之一。
它可以和Eureka、Ribbon、Hystrix等组件配合使用。
在Spring Cloud Finchley正式版之前,Spring Cloud推荐的网关是Netflix提供的Zuul(此处指Zuul 1.X)。
然而,Netflix在2018年宣布一部分组件进入维护状态,不再进行新特性的开发。这部分组件中就包含Zuul。


Spring Cloud Gateway

Spring Cloud Gateway是Spring Cloud的一个全新的API网关项目,基于Spring + SpringBoot等技术开发,目的是为了替换掉Zuul。
旨在为微服务架构提供一种简单而有效的途径来转发请求,并为他们提供横切关注点,比如:安全性、监控/指标和弹性。


Spring Cloud Gateway的使用

创建模块(项目)

引入依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <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-loadbalancer</artifactId>
        </dependency>

添加启动类

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        org.springframework.boot.SpringApplication.run(GatewayApplication.class, args);
    }
}

添加配置

server:
  port: 8370

spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    # 网关相关配置
    gateway:
      routes:
        - id: order-service # 路由规则id,随便起
          uri: lb://order-service # 访问的路径 这里的order-service和order-service的application.yml中的name要一致
          predicates:
            - Path=/order/** # 满足这个条件,才会转发到上面的uri

id: 自定义路由ID,保持唯一。
uri: 目标服务地址,支持普通URI及lb://应用注册服务名称。lb表示负载均衡,使用lb://方式表示从注册中心获取服务地址。
predicates: 路由条件,根据匹配结果决定是否执行该请求路由。上述代码中,我们把符合Path规则的一切请求,都代理到uri参数指定的地址。

启动测试

没有配置的就访问不了

在配置文件中添加,重启查看效果

    # 网关相关配置
    gateway:
      routes:
        - id: order-service # 路由规则id,随便起
          uri: lb://order-service # 访问的路径 这里的order-service和order-service的application.yml中的name要一致
          predicates:
            - Path=/order/**, /feign/** # 满足这个条件,才会转发到上面的uri</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值