redis - Redis PubSub Lettuce:如何处理背压?
问题描述
我们正在使用RedisPubSubReactiveCommands
和调用 Lettuce 的subscribe
andobserveChannels
方法。
发布者快,订阅者慢的情况下,背压如何处理?由于发布者和订阅者在 Redis 中是独立的,因此生产者无法减慢速度。鉴于这一事实,以下哪些理解是正确的?
数据是否在应用程序端被丢弃(生菜丢弃它)取决于被
OverflowStrategy
采取的observeChannels
?如果是这种情况,它的效率就相当低,因为数据从 Redis 服务器一路传到应用程序,从而产生了不必要的网络流量。Lettuce 是否将背压传递给客户端的 TCP 层,然后应用程序不会收到任何内容,但 TCP 缓冲区将已满。查看这个Github commit,这似乎是实现。但我不明白的是,提供的东西是做什么的
OverflowStrategy
?是否将背压一直传递到 Redis 服务器,从而减少网络流量。这是我认为最有效的解决方案。我不认为这是 Redis/Lettuce 的行为。没有这种方式的原因可能是什么?
任何人都可以帮助我们形成正确的理解。
解决方案
推荐阅读
- arrays - 我需要使用嵌套数组吗?如何设置?- 时髦的
- ios - 将新初始化的 UIImageView 传递给类的属性(类型 UIImageView)给出零?
- azure - 通过 c# 使用 blob 容器中的所有数据重新训练 azure ml
- ios - 场景套件 iOS 12 中的明亮模型
- json - jq使用bash向现有文件添加行
- sql - 将逗号分隔的字符串拆分为行简化
- java - 我在 Joda-Time 的两个日期之间的时间错误
- jdbc - Kafka Connect - NoClassDefFoundError:无法初始化类 org.apache.calcite.jdbc.Driver
- java - tomcat 错误 404 - 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- css - 移动 Safari,Css 动画在导航时冻结