背景
Redis pub-sub就像是一个即弃即用系统,其中您产生的所有消息将立即传递给所有使用者,而数据却不保存在任何地方。关于Redis,您的内存有限。同样,生产者和消费者的数量也会影响Redis的性能。
另一方面,Kafka是一种高吞吐量的分布式日志,可以用作队列。在这里,任何数量的用户都可以生产,而消费者可以在任何时候消费。它还为通过队列发送的消息提供持久性。
对比
使用Redis:
如果您想要一种救火忘了的系统,那么您产生的所有消息都会立即传递给消费者。
如果最关心速度。
如果您可以忍受数据丢失。
如果您不希望系统保留已发送的消息。
要处理的数据量不是很大。
使用kafka:
如果您想要可靠性。
如果您希望系统拥有即使使用后仍已发送的消息副本。
如果您无法忍受数据丢失。
如果速度不是大问题。
数据量巨大
注意事项
redis 发布订阅是基于推送的,订阅者能收到的信息只能是自它开始订阅之后的消息,之前已经发布的就不能收到了。
kafka 发布订阅是基于pull的,所以kafka可以pull到订阅之前的消息
新特性
Redis 5.0+版本提供了Stream数据结构。可以将其视为具有交付保证的日志数据结构。它提供了一组阻止操作,使消费者可以等待生产者添加到流中的新数据,此外还提供了一个名为“消费者组”的概念。
基本上,Stream结构提供与Kafka相同的功能。
这是文档https://redis.io/topics/streams-intro
参考资料
https://www.cloudkarafka.com/blog/part1-kafka-for-beginners-what-is-apache-kafka.html
https://kafka.apache.org/documentation.html#design_pull
《本文》有 0 条评论