【Spring Cloud】- Gateway网关你了解多少?

什么是网关

网关可以提供一个统一的API入口,用于访问一个或多个接口,提供统一的路由方式且基于Filter链;

路由转发

接收请求,转发到后台微服务中,是构建网关的基本模块,一系列的断言和过滤器组成,如果断言为true则匹配该路由

过滤器:

在网关服务中可以完成的一系列横切操作,使用过滤器,可以在请求被路由前或之后对请求进行修改;

为什么需要网关

在微服务架构中,整个大项目是由多个小的服务系统提供出来,其中每个小的服务系统被成为微服务,他们可以拥有自己独立的插件、框架、数据库甚至是语言,API网关可以为外部用户提供一个独立于内部微服务组件的统一入口,所有的客户端和消费端都通过统一的API网关接入微服务,统一规范与管理,兼容各客户端请求;

为什么选择Gateway

一方面因为Zuul1.0已经进入了维护阶段,而且Gateway是SpringCloud团队研发的,是亲儿子产品,值得信赖。

Gateway是基于异步非阻塞模型上进行开发的,性能方面不需要担心。虽然Netflix早就发布了最新的Zuul2.x,但Spring Clpud 貌似没有整合计划。而且Netflix相关组件都宣布进入维护期;

多方面综合考虑Gateway是很理想的网关选择

特征-路由转发,执行过滤链

动态路由:

构建网关的基本模块,由ID、目标URI、一系列的断言和过滤器组成,如果断言为true则匹配该路由

Predicate(断言):

参考的是Java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

Filter(过滤器):

指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

Web请求处理:

web请求,通过一些匹配条件,定位到真正的服务节点。并在这个转发过程的前后,进行一些精细化控制。predicate就是我们的匹配条件;而filter,就可以理解为一个无所不能的截器。有了这两个元素,再加上目标uri,就可以实现一个具体的路由了

与Zuul区别

Zuul基于阻塞I/O的API网关,不支持长连接,每次I/O操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程工作;

Spring Cloud Gateway支持WebSocket,并且与Spring紧密集成

比较GatewayZuul
连接支持长连接不支持长连接
堵塞阻塞I/O非阻塞I/O
WebSocket支持不支持

配置及测试过程

配置-配置文件配置

spring:
	application:
		name: cloud-gateway
	cloud:
	gateway:
		routes:
		- id: payment_routh #payment_route    #路由的ID,没有固定规则但要求唯

配合服务名

uri: http://localhost:8001          #匹配后提供服务的路由地址
predicates:
	- Path=/payment/get/**         # 断言,路径相匹配的进行路由

测试

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值