我是分布式流处理(Spark)的新手。我已经阅读了一些教程/示例,这些教程/示例涵盖了背压如何导致生产者减速以响应过载的消费者。给出的经典示例是摄取和分析推文。当流量出现意外高峰时,消费者无法处理负载,他们会施加背压,生产者会通过调低速率来做出响应。
我没有真正看到的是在实践中使用了哪些方法来处理由于整个管道容量较低而无法立即处理的大量传入实时数据?
我想这个问题的答案取决于业务领域。对于某些问题,只删除该数据可能会很好,但在这个问题中,我想关注我们不想丢失任何数据的情况。
由于我将在 AWS 环境中工作,我的第一个想法是在 SQS 队列或 Kinesis 流中“缓冲”多余的数据。在实践中是否像这样简单,或者对于这个问题有更标准的流式解决方案(可能是 Spark 本身的一部分)?