Spring Cloud Alibaba 整合gateway

网关是什么

网关是所有服务请求的一个统一入口,方便我们对服务请求与响应做统一的管理
Spring Cloud Alibaba 整合gateway_第1张图片
网关的核心功能是路由转发,同时还可以做限流、熔断、日志监控、认证

为什么我们需要网关

我们在微服务架构的时候,把我们的业务员拆分为一个个小的服务,他们由不同的团队进行开发、测试、部署,而一个微服务为了高可用一般都需要部署多实例。如果我们让客户端直接调用服务:

  • 会增加客户端的配置成本
  • 服务端没办法对调用做统一管理
  • 每个服务都需要去做权限认证
  • 如果服务部署地址发生变化,则客户端需要修改服务调用地址
spring cloud gateway介绍

Spring Cloud Gateway是Spring官方提供的基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关。他是Spring cloud生态的第二代网关,旨在替代ZUUL(第一代)。Spring Cloud Gateway的底层是基于Netty、Reactor、WebFlux构建的。其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
优点:

  • 性能强劲
  • 功能强大,内置很多实用功能,不如转发、监控、限流。
  • 设计优雅,易于扩展

缺点:

  • 依赖Netty与WebFlux,不是Servlet编程模型
  • 不能再Servler容器下工作,也不能达成WAR包
  • 不支持Spring Boot 1.X
Spring Cloud Gateway 核心概念
  • Route(路由):spring cloud Gateway的基础元素,可以简单理解成一条转发规则。包含ID、目标URL、Predicate集合一级Filter集合。
  • Predicate(谓词):即java.util.function.Predicate,spring cloud Gateway使用Predicate实现路由的匹配条件
  • Filter(过滤器):修改请求以及响应
Spring Cloud Gateway 架构

Spring Cloud Alibaba 整合gateway_第2张图片

  • 客户端发送请求到网关
  • Gateway Handler Mapping 依据Predicate来判断请求路径是否匹配路由的配置,如果匹配,则请求发送的Gateway Web Handler
  • Gateway Web Handler读取路由上的Filter,然后把请求交给Filter处理
  • Filter被中间虚线分开,左边(“pre” filter)是发送请求到微服务之前处理的,右边(“post” filter)是请求从服务返回到网关之后处理的
Route Predicate Factories(路由谓词工厂)

Spring Cloud Gateway 提供了11中内置好的谓词工厂。这里就不一一去做演示了,可以参考官方文档Spring Cloud Gateway谓词工厂
Spring Cloud Alibaba 整合gateway_第3张图片

整合spring cloud gateway
引入jar包

   <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-gatewayartifactId>
    dependency>
写配置
server.port=9003
# Nacos注册时候的名称
spring.application.name=micro-provider

# Nacos 注册中心配置地址(无需配置 HTTP 协议部分)
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

#让gateway通过服务发现组件找到其他微服务
spring.cloud.gateway.discovery.locator.enabled=true
测试

这里分别启动micro-provider、micro-gateway两个服务
在这里插入图片描述
直接调用
http://localhost:9003/echo/123
Spring Cloud Alibaba 整合gateway_第4张图片

通过网关
http://localhost:9004/micro-provider/echo/gateway%E8%AF%B7%E6%B1%82
Spring Cloud Alibaba 整合gateway_第5张图片
两次都可以请求通,这里gateway会自动去nacos拉取服务列表,依据路由规则做转发

你可能感兴趣的:(spring,cloud,alibaba,spring,gateway)