V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ojh
V2EX  ›  问与答

反应式编程的背压是个啥

  •  
  •   ojh · 2022-05-20 21:25:55 +08:00 · 1893 次点击
    这是一个创建于 918 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,不太懂。没有这个背压又会导致什么问题呢

    9 条回复    2022-05-21 15:54:52 +08:00
    Xhack
        1
    Xhack  
       2022-05-20 22:40:15 +08:00
    明天我就能回答你这个问题了
    dqzcwxb
        2
    dqzcwxb  
       2022-05-20 22:51:13 +08:00
    生产速度快过消费速度造成积压
    arloor
        3
    arloor  
       2022-05-20 23:42:43 +08:00 via Android
    你冲的太快,ta 让你慢点
    ojh
        4
    ojh  
    OP
       2022-05-20 23:43:35 +08:00
    @dqzcwxb 能举个场景吗,比如处理无限数据流的时候消费不过就导致内存爆炸?
    gabon
        5
    gabon  
       2022-05-20 23:53:14 +08:00 via iPhone
    @ojh 个人理解是这么个意思。虽然 backpressure 直译过来感觉很奇怪,但又没有一个好的词能准确描述出来这种感觉。
    vToExer
        6
    vToExer  
       2022-05-20 23:57:27 +08:00
    从系统论的观点看, 背压相当于引入了一条负反馈回路。没有背压时, 如上所述, 生产者始终快于消费者, 消费者维护的队列会很快溢出, 导致数据丢失, 系统不稳定。有了背压后, 在消费者发现队列满的情况下, 可以通知生产者减少或停止生产, 避免数据丢失, 使系统处于稳态。
    billlee
        7
    billlee  
       2022-05-21 00:49:50 +08:00
    就和 TCP 窗口流控是差不多的
    Leviathann
        8
    Leviathann  
       2022-05-21 01:03:32 +08:00
    @gabon 应该是回压。。只能说大部分搞这些技术词汇翻译的人英语和汉语都不咋地
    mmdsun
        9
    mmdsun  
       2022-05-21 15:54:52 +08:00 via iPhone
    Backpressure 是流速控制的一种策略。指在异步场景中,Observable 发送事件速度远快于 Subscriber/Observer 的处理速度的情况下,一种告诉上游的 Observable 降低发送速度的策略。

    如果用 Rx 库,叫 Reactive Pull(反应式拉取)比较多,更符合含义叫法是 Reactive Push

    响应式拉取和观测者模型相反,是被观察者变成被动的等待通知再发送数据。所以名字是这么叫的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2518 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:33 · PVG 23:33 · LAX 07:33 · JFK 10:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.