知识卡片
背压让消费者掌控节奏
内容
响应式流是推模型:生产者有新数据就主动通知消费者,而不是像 Java Stream 那样由消费者主动拉取。纯推模型有个隐患——生产者如果发送数据的速度远超消费者处理速度,消费者会被压垮,进而拖慢整个应用、引发级联故障,甚至等同于生产者对自己发起了一场拒绝服务攻击。背压(也叫控流)机制让消费者在订阅时就告诉生产者”我一次最多能处理这么多”,生产者据此调节发送节奏,主导权因此从生产者手里转移到了消费者手里。发散:这本质是流量控制在应用层的复现——TCP 的滑动窗口解决的是同一类问题(发送方不能无脑按自己的速度灌数据,得看接收方的处理能力),响应式流把这个思路从网络层搬到了应用内部的数据管道设计里。
参考来源
《Cloud Native Spring in Action》第8章《Reactive Spring: Resilience and scalability》