Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis Streams vs Kafka Streams/NAT_Redis_Redis Streams - Fatal编程技术网

Redis Streams vs Kafka Streams/NAT

Redis Streams vs Kafka Streams/NAT,redis,redis-streams,Redis,Redis Streams,Redis团队为Redis 5.0引入了新的数据类型。因为从第一个角度看,Streams看起来像卡夫卡主题,所以很难找到使用它的真实示例 在与卡夫卡流的比较中: 运行时使用者组处理。例如,如果三个使用者中有一个永久性失败,Redis将继续为第一个和第二个使用者提供服务,因为现在我们只有两个逻辑分区(使用者) Redis的流速度要快得多。它们从内存中存储和操作,所以这一个就是这样 我们与卡夫卡、拉比MQ和NATS有一些项目。现在,我们正在深入研究Redis stream,尝试将其用作“卡夫卡前缓存

Redis团队为Redis 5.0引入了新的数据类型。因为从第一个角度看,Streams看起来像卡夫卡主题,所以很难找到使用它的真实示例

在与卡夫卡流的比较中:

  • 运行时使用者组处理。例如,如果三个使用者中有一个永久性失败,Redis将继续为第一个和第二个使用者提供服务,因为现在我们只有两个逻辑分区(使用者)
  • Redis的流速度要快得多。它们从内存中存储和操作,所以这一个就是这样
  • 我们与卡夫卡、拉比MQ和NATS有一些项目。现在,我们正在深入研究Redis stream,尝试将其用作“卡夫卡前缓存”,在某些情况下还可以作为卡夫卡/NATS的替代方案。目前最关键的一点是复制:

  • 使用AOF复制将所有数据存储在内存中
  • 默认情况下,异步复制不会保证复制XADD命令或使用者组状态更改:故障切换后,可能会丢失某些内容,具体取决于跟随者从主服务器接收数据的能力。这一个看起来像点杀死任何兴趣尝试流在高负载
  • 由Sentinel或Redis Cluster操作的Redis故障切换过程仅执行尽力而为的检查,以将故障切换到更新最多的跟随者,并且在某些特定故障下,可能会升级缺少某些数据的跟随者
  • 以及cap策略。Redis Streams真正的“封顶资源”是内存,所以要存储多少项或使用哪种封顶策略并不重要。因此,每次消费者出现故障时,您都会得到峰值内存消耗或cap消息丢失

    我们使用Kafka作为RTB前端,每秒处理约1100000条消息,负载约为120字节。使用Redis,我们的写入内存消耗约为170 mb/秒,而使用512 gb RAM服务器,我们的写入“保留”时间约为50分钟。所以,若处理系统这次离线,我们将崩溃


    你们能告诉我更多关于Redis Streams在现实世界中的使用情况吗?也许你们自己也在尝试使用它?或者可能是Redis Streams的数据量不大?

    好久不见。这感觉像是属于redis db邮件列表的讨论,但用例听起来很吸引人


    请注意,Redis Streams无意成为卡夫卡的替代品——尽管有相似之处,但它们提供了不同的属性和功能。关于复制的异步性质,您当然是正确的。至于缩放可用内存的数量,你应该考虑使用一个集群并在基于周期的键名上划分你的流。

    我一直在玩ReDIS流,是的,有些情况下卡夫卡/ RabBMQ可以被替换。特别是当性能比数据持久性更重要时。我正在维护一个存储库,以便在Redis Streams支持的NodeJ上实现总线: