springcloudgateway 一般做什么

SpringCloudGateway和SpringCloudZuul一样是微服务网关,不过Gateway是SpringCloud官方推出的,而Zuul是Netflix推出的。

看其他人的一些文章说是Gateway是用于取代Zuul的第二代网关,这个我在官方找不到资料说明。

主要术语

default-filters: 里面可以定义一些共同的filter,对所有路由都起作用

routes:具体的路由信息,是一个数组,每一个路由基本包含部分:

id:这个路由的唯一id,不定义的话为一个uuid

uri:http请求为lb://前缀 + 服务id;ws请求为lb:ws://前缀 + 服务id;表示将请求负载到哪一个服务上

predicates:表示这个路由的请求匹配规则,只有符合这个规则的请求才会走这个路由。为一个数组,每个规则为并且的关系。

filters:请求转发前的filter,为一个数组。

order:这个路由的执行order

网关请求

SpringCloudGateway限流原理与实践

缓存、降级和限流是开发高并发系统的三把利器。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;降级是当服务出现问题或者影响到核心流程的性能则需要暂时屏蔽,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源、写服务、频繁的复杂查询,因此需有一种手段来限制这些场景的并发/请求量,即限流。

限流的目的是通过对并发访问/请求进行限速,或对一个时间窗口内的请求进行限速来保护系统。一旦达到限制速率则可以拒绝服务、排队或等待、降级。

一般开发高并发系统常见的限流有:限制总并发数、限制瞬时并发数、限制时间窗口内的平均速率、限制远程接口的调用速率、限制MQ的消费速率,或根据网络连接数、网络流量、CPU或内存负载等来限流。

本文主要就分布式限流方法,对Spring Cloud Gateway的限流原理进行分析。

分布式限流最关键的是要将限流服务做成原子化,常见的限流算法有:令牌桶、漏桶等,Spring Cloud Gateway使用Redis+Lua技术实现高并发和高性能的限流方案。

令牌桶算法

令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。令牌桶算法的描述如下:

假如用户配置的平均速率为r,则每隔1/r秒一个令牌被加入到桶中;

假设桶最多可以存发b个令牌。如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃;

当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上;

如果令牌桶中少于n个令牌,那么不会删除令牌,并且认为这个数据包在流量限制之外;

算法允许最长b个字节的突发,但从长期运行结果看,数据包的速率被限制成常量r。对于在流量限制外的数据包可以以不同的方式处理:

它们可以被丢弃;

它们可以排放在队列中以便当令牌桶中累积了足够多的令牌时再传输;

它们可以继续发送,但需要做特殊标记,网络过载的时候将这些特殊标记的包丢弃。

漏桶算法

漏桶作为计量工具(The Leaky Bucket Algorithm as a Meter)时,可以用于流量整形(Traffic Shaping)和流量控制(Traffic Policing),漏桶算法的描述如下:

一个固定容量的漏桶,按照常量固定速率流出水滴;

如果桶是空的,则不需流出水滴;

可以以任意速率流入水滴到漏桶;

如果流入水滴超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的。

实践

SpringCloudGateway限流方案

Spring Cloud Gateway 默认实现 Redis限流,如果扩展只需要实现Ratelimter接口即可,同时也可以通过自定义KeyResolver来指定限流的Key,比如我们需要根据用户、IP、URI来做限流等等,通过exchange对象可以获取到请求信息,比如:

用户限流

@Bean

public KeyResolver ipKeyResolver() {

return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());

}

SpringCloudGateway默认提供的RedisRateLimter 的核心逻辑为判断是否取到令牌的实现,通过调用 META-INF/scripts/request_rate_limiter.lua 脚本实现基于令牌桶算法限流

Java开发者都知道大名鼎鼎的Spring,可以这样说,目前市面上所需要的功能Spring全家桶(Spring、Spring Boot、Spring Cloud)都提供了完美的解决方案。

Spring Cloud它是基于Spring Boot的一款微服务开发框架,它提供了配置管理、服务发现、熔断器、路由、服务跟踪及治理等微服务开发一整套的解决方案。

微服务技术中的网关(Gateway)技术

网关(Gateway)是任何微服务架构中最为重要的一部分,网关就好比是一个门卫,严格把关外来访客与内部微服务之间的沟通联系。其实,网关是微服务对外的唯一入口!外部发起的所有请求都是要经过网关的,由网关来决定不同的请求到不同的微服务程序去处理。

Spring Cloud中的网关技术

Spring Cloud中的网关不止一种,Spring Cloud中最早期的网关采用的是Zuul,后来改用了Spring Cloud Gateway。

1、Zuul不是Spring Cloud官方推出的

Zuul网关其实是Netflix开发的,它是阻塞式API,而且不支持长连接和Websocket,所以是有一定缺陷的。

2、Spring Cloud Gateway是用来替代Zuul网关的

Spring 5起就推出了自己的网关:Spring Cloud Gateway。它是基于Spring Boot开发的,性能上比Zuul要好,而且在配置及使用上都要比Zuul更方便。

总结

Spring Cloud Gateway是用来替代Zuul网关的,是由Spring官方开发维护的,无论在性能还是操作上都优于Zuul。在新一代Spring Cloud项目中推荐使用。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/12029.html

(0)
上一篇 2023-07-09 上午9:43
下一篇 2023-07-09 上午10:00

相关推荐

  • 今年专科分数线是多少

    北京 理工类:一批537分,二批439分 文史类:一批555分,二批468分 上海 本科:402 自主招生:501 艺术类本科:261 体育类本科:281 天津 理工类:一批521…

    培训问答 2023-06-30
  • 音乐工作室

    电脑,设备,朋友,听众。最重要的是想法。 要想玩电脑音乐,对于初学者而言一定得有一套电脑音乐系统来入门和学习。因为现今的电脑音乐制作模式,基本上使用电脑来进行MIDI音乐的制作,再…

    培训问答 2022-05-13
  • 出国留学 机构,出国留学贵吗,有什么留学机构值得推荐的专业

    首先,出国留学指的是离开我国去其他国家和地区学习这个事情,有贵的有不贵的。因为我们一般出国留学都是去教育比我国好的地方去,所以肯定是贵的。比如经常去的美国,加拿大,英国,澳大利亚,…

    培训问答 2022-08-17
  • 大家能推荐,一些高考志愿填报模拟的软件吗

    现在社会上太多志愿填报软件,鱼龙混杂,导致家长分不清楚。在17年,我遇到了一位家长,在使用我的软件之前买了三次,都不是很理想。她说都已经失去信心了,最后有幸的是看到了宏志愿的广告,…

    培训问答 2023-04-27
  • 学做健身教练需要多少钱,学健身教练去哪里学习

    可能了你会问我,还有哪些不同类型的教练?是的,现在健身房里面的教练分为以下两种,先给你们说下区别,然后再告诉你们培训机构的学费什么的,一些区别。 1.私人教练 什么是私人教练?顾名…

    培训问答 2023-01-11
  • 网络教育本科统考科目难吗

    网络教育考试难度怎么样?众所周知网教是成人教育中相对容易通过的,主要是全国各远程教育学院是自主命题的。 网络教育考试难吗 网络教育考试难度其实并不大的,为什么呢?网络教育专科,还是…

    培训问答 2023-03-04
  • 农民培训项目有哪些

    目前,各地根据当地自身情况,以农民实际需求为目标,开展了以培训知识农民带动农户增收、培养职业农民带动农业增效为主题的培训活动,让农民融入现代农业发展,让农民从中获得实实在在的生产技…

    培训问答 2022-11-29
  • 麦吉尔大学,多伦多大学和滑铁卢大学应该怎么选

    就本科而言,如果能上清北,想在美国前五的大学深造,麦吉尔大学是最好的选择。麦大在北美的知名度远非多大和滑铁卢能比。 如果想念完本科之后,就移民就业,滑铁卢的计算机和精算还是不错的选…

    培训问答 2022-04-10
  • 报关员培训,报关员工资一般多少

    17年毕业,大专,学的是物流管理。毕业后直接来深圳的一家传统第三方物流公司的关务部门做现场报关员,工资4000(包吃住),刚毕业,虽然大学有开报关方面的课程,但是纸上得来终觉浅,实…

    培训问答 2022-11-29
  • 如何驾驶手动挡,如何驾驶手动挡汽车教学

    对于很多车迷而言,开车时能用手拨弄挡把才称得上是真正的“驾驶”。然而汽车工业的进步却让手动挡越来越边缘化,基本沦为了廉价车的选择……那站在2021年这个时间…

    培训问答 2023-06-01