網頁

2019/10/13

Reactive Programming backpressure 是什麼

在Reactive Programming(響應式程式設計)中常可看到backpressure(回壓/返壓)這個名詞,意思如下。

backpressure的意思是指:

subscriber(訂閱端)/consumer(消費端)有能力去控制/通知publisher(發布端)/producer(生產端)發出資料的速度。


backpressure原自於流體動力學(Fluid dynamics),是指管道(pipe)中抵抗正向流量的反向阻力(oppose force)。例如水流總是從高水壓區流向低水壓區,如果低水壓區無法負荷來自高水壓區的流量就會形成一股backpressure,此壓力是反向(back)的,可能導致管道的水流洩漏或溢出。


程式借用了backpressure這詞來描述類似的情況,差別在於管道(pipe)中流動的東西改為資料(data)而已。
所以在Reactive Programming中的backpressure意思是:

當publisher/producer發出的資料量超過subscriber/consumer時的情況;
換句話說,當subscriber/consumer無法負荷來自publisher/producer發出的資料量時就會形成backpressure。


backpressure會導至資料丟失,因此backpressure的意思進一步被衍伸為解決這問題的手段,也就是consumer有能力去控制/通知producer送出資料的速度。


白話一點就是:

後面來不及處理,叫前面慢一點。


參考:

1 則留言:

  1. 白話一點就是:後面來不及處理,叫前面慢一點。
    XDXDXDXD

    回覆刪除