Redis PubSub Lettuce:如何处理背压?

Dol*_*lyg 5 publish-subscribe redis lettuce backpressure reactive

我们正在使用RedisPubSubReactiveCommands并调用Lettuce 的subscribeobserveChannels方法。

\n\n

如果发布者速度快而订阅者速度慢,则如何处理背压?\n由于发布者和订阅者在 Redis 中是独立的,因此无法减慢生产者的速度。鉴于这一事实,以下哪种理解是正确的?

\n\n
    \n
  1. 数据是否会在应用程序端被丢弃(生菜会丢弃它),具体取决于 所OverflowStrategy采取的方式observeChannels? \n如果是这种情况,则效率非常低,因为数据从 Redis 服务器一路传输到应用程序,从而产生不必要的网络流量。

  2. \n
  3. Lettuce是否向客户端的TCP层传递反压,那么应用程序\xe2\x80\x99不会收到任何东西,但TCP缓冲区将满。看看这个Github 提交,这似乎是实现。\n但我不明白的是,OverflowStrategy提供的内容做了什么?

  4. \n
  5. 是否将背压一路传递到Redis服务器,从而减少网络流量。在我看来,这是最有效的解决方案。\n我不\xe2\x80\x99不认为这是Redis/Lettuce的行为。不这样的原因可能是什么?

  6. \n
\n\n

任何人都可以帮助我们形成正确的理解吗?

\n