什么是网关,网关的作用是什么?
展开全文
广义上的网关或者说物理级别的网关是指在网络层上以实现网络互连,是两个高层协议不同的网络互连。作为大狂客程序员,看到网关第一想到的是spring cloud 的gateway。今天主要向大家介绍软件行业分布式系统中网关的含义作用以及使用过程中的注意事项。
geteway定义以及作用
上这么说的,This project provides a library for building an API Gateway on top of Spring MVC. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency。(该项目为我们提供一个在springmvc上构建网关API的代码库,为我们提供一种简单高效安全的api。主要包括的功能有路由转发、权限校验、限流控制等)。在简单了解了spring-cloud的网关定义之后,我简单说下使用场景以及意义。在分布式系统中,内部服务之间通过api访问,spring-cloud提供feign的restapi访问方式,内网访问不存在安全隐患,对外提供服务时,需要一个道门专门来做内外网环境隔离以及对外部请求的过滤。在这个背景下geteway因用而生了(替代了上个版本的zuul)。
核心实现思路
filter(过滤器),网关是在内部调用程序外围添加一个带各种过滤器的spring-boot的项目,同样会在注册中心注册。在各种不同的过滤器中提供各个不同功能的API接口。
核心功能
1.内外网隔离,外网所有请求都只能通过网关访问内网数据;防止网关单点,最好在不同大区配置多台网关服务器。
2.验证+鉴权,外网所有请求,通过网关指定过滤器对用户访问权限进行控制。可以整合OAuth2,token,jwt等提高架构安全性。
3.服务降级+限流+日志+监控。限流算法如令牌桶、漏桶等,Spring Cloud Gateway使用Redis+Lua技术实现高并发和高性能的限流方案。简单介绍一下几个限流算法:令牌桶算法:
4.
令牌桶算法:
假如用户配置的平均速率为r,则每隔1/r秒一个令牌被加入到桶中;假设桶最多可以存发b个令牌。如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃;当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上;spring到底是干啥的
如果令牌桶中少于n个令牌,那么不会删除令牌,并且认为这个数据包在流量限制之外;
算法允许最长b个字节的突发,但从长期运行结果看,数据包的速率被限制成常量r。对于在流量限制外的数据包可以以不同的方式处理:
它们可以被丢弃; 它们可以排放在队列中以便当令牌桶中累积了足够多的令牌时再传输; 它们可以继续发送,但需要做特殊标记,网络过载的时候将这些特殊标记的包丢弃。
漏桶算法:
漏桶算法的描述如下:
一个固定容量的漏桶,按照常量固定速率流出水滴; 如果桶是空的,则不需流出水滴; 可以以任意速率流入水滴到漏桶; 如果流入水滴超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的。
5.路由+数据整合。
注意事项
网关是外部网络访问内部服务器的唯一通道,存在单点故障问题,需要部署集解决;所有的请求都通过网关访问,网关压力会非常大,需要系统做全面的压力测试,并根据业务需求对网关进行拆分,以减小网关压力,降低不同业务的耦合度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论