背压与流控

简介: 背压与流控

正文


今天在学习的过程中,突然发现背压(back-pressure)。这是什么?流控(flow control)又是什么?


实际上,背压是实现流控的一种途径,或者是方法之一,实现流控的方法有很多。下面进行一一说明:(1)背压(back-pressure:就是消费者需要多少,生产者就生产多少。这有点类似于TCP里的流量控制,接收方根据自己的接收窗口的情况来控制接收速率,并通过反向的ACK包来控制发送方的发送速率。它主要的实现的是从服务的订阅端告诉服务的提供者自己的消费的能力。(2)节流(Throttling):也就是直接丢弃用户的请求。如果服务消费者消费不过来,就要丢弃用户的一些请求。具体的如何丢弃也有一些策略,就像Java中的线程池中的拒绝策略类似。(3)打包(buffer和window)。buffer和window基本一样,只是输出格式不太一样。它们是把上游多个小包裹打成大包裹,分发到下游。我更愿称为可以进行批量的请求。比如,用户的请求到某个服务的时候,可以等待一定量的请求,然后处理这些请求,进行批量的处理,防止大量的用户请求都直接请求到后端,使后端服务不可用,造成阻塞。(4)最后一种就是排队,也就是服务提供方针对用户的请求进行排队,然后,服务提供者一一消费用户的请求服务。但是这样做势必会造成用户等待的时间增加。流控,顾名思义,就是流量控制。它的主要的目的就是实现服务提供者与服务消费者之间的关系。防止出现过多的请求,导致整体的服务无法对外提供优质的服务。实际上实现流控的并不仅仅是这些,例如Nginx里面的算法,漏斗算法、令牌算法、隔板等等技术都是可以实现的。

今天背压的这种概念,从Spring5中的WebFlux了解到。WebFlux与我们平时使用的SpringMVC是差不多的,但是它最主要的优势是采用Reactor的方式处理用户的请求,提供非阻塞的请求。同时支持函数式编程,下面的图片是具体的介绍:

21.png

19.png

同时,它也支持多种的部署方式,可以部署在不同的容器中

20.png

因为它实现的是NIO的方式,那么它就需要在Servlet3.1以上的支持NIO的容器中进行使用。这个技术还是有很多没有了解的地方,自己还要深入的了解。作者才疏学浅,如果不正确的地方,欢迎各位批评指正互相学习。

相关文章
|
存储 缓存 算法
【自己动手画CPU】存储系统设计
博文“【自己动手画CPU】存储系统设计”探讨了在自制 CPU 中存储系统的设计。存储系统是计算机中至关重要的组成部分,负责存储和检索数据。文章介绍了在 DIY CPU 中实现存储系统的关键考虑因素,包括存储器的类型、存储器与 CPU 的连接方式以及数据存取的速度和效率。通过深入探讨存储系统的设计原理和实现方式,读者可以更好地理解计算机内部结构,并且为自己动手设计和构建 CPU 提供了有益的指导和启发。
438 0
【自己动手画CPU】存储系统设计
|
Shell Android开发
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
1432 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:ChatGPT Atlas、Claude Code、Haiku 4.5、Veo 3.1、nanochat、DeepSeek-OCR
AI Compass前沿速览:ChatGPT Atlas、Claude Code、Haiku 4.5、Veo 3.1、nanochat、DeepSeek-OCR
385 37
AI Compass前沿速览:ChatGPT Atlas、Claude Code、Haiku 4.5、Veo 3.1、nanochat、DeepSeek-OCR
|
机器学习/深度学习 自然语言处理 测试技术
社区供稿 | 封神榜团队揭秘大模型训练秘密:以数据为中心
近一年来,各种各样的开源和闭源的大语言模型,不断在多个中文英文的测试基准中刷新着记录。然而,大语言模型的开发仍然面临诸多挑战,比如从头开始训练大语言模型的高昂成本,以及继续预训练导致的灾难性遗忘等等。尽管许多研究致力于解决这些问题,但一个重要而且实际的限制是,许多研究过于追求扩大模型规模,没有全面分析和优化预训练数据在训练大语言模型过程中的使用。
|
4月前
|
人工智能
黑森林开源Flux.1 Krea Dev!魔搭AIGC专区Day1支持,提供生图与训练定制
FLUX模型又又又更新了! 黑森林联合Krea发布了文生图模型Flux.1 Krea Dev,这是目前最好的开源文生图模型。 魔搭社区第一时间上线Flux.1 Krea Dev,快来AIGC专区抢先体验图片
442 11
|
Windows
Windows 11 鼠标右键可选择 cmd 命令行选项
Windows 11 鼠标右键可选择 cmd 命令行选项
257 0
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
27227 66
图解一致性哈希算法,看这一篇就够了!
|
存储 大数据 数据管理
元宇宙与大数据之间存在着紧密的联系,以下是关于它们之间关系的详细阐述:
**元宇宙是融合扩展现实、数字孪生和区块链的虚实融合新形态,特征包括同步拟真、开源创造、永续及闭环经济。大数据则指海量复杂数据集,以其大容量、多样性、高速处理和低价值密度为特点。元宇宙依赖大数据进行用户行为分析、智能决策和经济体系管理,而大数据在元宇宙中找到广泛应用场景,两者相互促进发展。**
|
消息中间件 Java 中间件
定时任务的六种策略
这篇文章,我们聊聊实现定时任务的六种策略。
|
Java Go
Go新手别再被切片复制坑了
Go新手别再被切片复制坑了
1146 0

热门文章

最新文章