代码之家  ›  专栏  ›  技术社区  ›  Nick Bondarenko

Redis Streams与Kafka Streams/NATS

  •  7
  • Nick Bondarenko  · 技术社区  · 6 年前

    Redis团队推出新产品 Streams

    streams intro 我们与卡夫卡流作了比较:

    1. Redis流得更快。他们存储和操作的记忆,所以这一个是这样的情况。

    我们与卡夫卡、拉比MQ和NATS有一些项目。现在我们正在深入研究Redis流,尝试将其用作“卡夫卡前缓存”,在某些情况下还可以作为卡夫卡/NATS的替代方案。目前最关键的一点是复制:

    1. 默认情况下,异步复制不会保证XADD命令或使用者组状态更改被复制:在故障转移之后,可能会丢失某些内容,这取决于从属服务器从主服务器接收数据的能力。这一个看起来像点杀死任何兴趣尝试流在高负荷。

    以及上限策略。Redis Streams真正的“封顶资源”是内存,所以您要存储多少项或使用哪种封顶策略其实并不重要。因此,每次你的消费者失败,你会得到峰值内存消耗或消息丢失与上限。

    我们使用Kafka作为RTB前端,每秒处理约1100000条消息,负载约120字节。对于Redis,我们有大约170 mb/秒的写入内存消耗,而对于512 gb RAM服务器,我们有大约50分钟的数据写入“保留”。所以,如果处理系统在这段时间处于离线状态,我们就会崩溃。

    1 回复  |  直到 4 年前
        1
  •  5
  •   Itamar Haber    6 年前

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

    请注意,Redis Streams并不打算成为Kafka的替代品——尽管有相似之处,但它们提供了不同的属性和功能。关于复制的异步性质,您当然是正确的。至于扩展可用的RAM数量,您应该考虑使用集群并跨基于周期的键名对流进行分区。

    推荐文章