背压是指数据被生产的速度比消费速度更快时发生的情况。在流中,如果一个快速的可读源向一个慢速的可写目标推送数据,未消费的数据会在内存中缓存——如果不进行处理,缓冲区会不断增长,直到内存耗尽。背压是保持生产者和消费者平衡的机制(和原则)。
问题
text
Fast source ──(1 GB/s)──▶ Slow destination (10 MB/s write speed)
▲
The 990 MB/s difference piles up in a memory buffer → OOM crash
示例:快速读取一个大文件并将其写入一个慢速的网络套接字或磁盘——如果你不尊重目标的速度,内存会急剧增长。
pipe 自动处理背压
js
{ createReadStream, createWriteStream } ;
().(());
