了解Gateway新一代网关

什么是服务网关

     服务网关=路由转发+过滤器

1.路由转发:接收一切外界请求,转发到后端的微服务上

2.过滤器:在服务网关中可以完成一系列的横切功能,例如:权限校验,限流以及监控等

为什么需要服务网关

上述所说的横切功能(以权限校验为例)可以写在三个位置:

1)每个服务自己实现一遍

2)写到一个公共的服务中,然后其他所有服务都依赖这个服务

3)写到服务网关的前置过滤器中,所有请求过来进行权限校验

第一种,缺点太明显,基本不用;

第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

由于每个服务引入了这个公共服务,那么相当于在每个服务中都引入了相同的权限校验的代码,使得每个服务的jar包大小无故增加了一些,尤其是对于使用docker镜像进行部署的场景,jar越小越好;

由于每个服务都引入了这个公共服务,那么我们后续升级这个服务可能就比较困难,而且公共服务的功能越多,升级就越难,而且假设我们改变了公共服务中的权限校验的方式,想让所有的服务都去使用新的权限校验方式,我们就需要将之前所有的服务都重新引包,编译部署。

而服务网关恰好可以解决这样的问题:

将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码,所以服务的jar包中也不会引入权限校验的逻辑,不会增加jar包大小;

如果想修改权限校验的逻辑,只需要修改网关中的权限校验过滤器即可,而不需要升级所有已存在的微服务。

所以,需要服务网关!!!

Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

栗子:

  从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。

为什么用gateway

  • 比zuul更早使用netty实现异步IO,从而实现一个简单,高效与springcloud紧密配合的API网关
  • 动态路由:能够匹配任何请求属性
  • 可以对路由指定Predicate(断言)和Filter(过滤器)
  • 集成Hystrix的断路器功能
  • 集成springcloud服务发现功能
  • 易于编写的Predicate(断言)和Filter(过滤器)
  • 请求限流功能
  • 支持路径重写

 

三大核心概念:

Route(路由):这是网关的基本构建块,由一个ID,一个目标URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配

Predicate(断言):输入类型是一个ServerWebExchange,我们可以使用他来匹配来自HTTP请求的任何内容,例如headers或参数

过滤器(filter):gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter 将会对请求和响应进行修改处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值