首页 > 解决方案 > Redis PubSub Lettuce:如何处理背压?

问题描述

我们正在使用RedisPubSubReactiveCommands和调用 Lettuce 的subscribeandobserveChannels方法。

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

  1. 数据是否在应用程序端被丢弃(生菜丢弃它)取决于被OverflowStrategy采取的observeChannels?如果是这种情况,它的效率就相当低,因为数据从 Redis 服务器一路传到应用程序,从而产生了不必要的网络流量。

  2. Lettuce 是否将背压传递给客户端的 TCP 层,然后应用程序不会收到任何内容,但 TCP 缓冲区将已满。查看这个Github commit,这似乎是实现。但我不明白的是,提供的东西是做什么的OverflowStrategy

  3. 是否将背压一直传递到 Redis 服务器,从而减少网络流量。这是我认为最有效的解决方案。我不认为这是 Redis/Lettuce 的行为。没有这种方式的原因可能是什么?

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

标签: redispublish-subscribereactivelettucebackpressure

解决方案


推荐阅读