这儿先用一个简单的例子来说明Kafka和Redis之间的区别:
老板有个好消息要告诉大家,有两个办法:
1.到每个座位上挨个儿告诉每个人。什么?张三去上厕所了?那张三就只能错过好消息了!
2.老板把消息写到黑板报上,谁想知道就来看一下,什么?张三请假了?没关系,我一周之后才擦掉,总会看见的!什么张三请假两周?那就算了,我反正只保留一周,不然其他好消息没地方写了redis用第一种办法,kafka用第二种办法,知道什么区别了吧。
redis最大的问题是其设计目的是做缓存系统,即使有持久化,其存储也是不可靠的。用它来做可靠性要求不高的消息队列是可以的。
Kafka的优点:
- 高性能。每秒钟可以处理数以千计生产者生成的消息。
- 高扩展性。可以通过简单的增加服务器横向扩展Kafka集群的容量。
- 分布式。消息来自数以千计的服务,使用分布式来解决单机处理海量数据的瓶颈。
- 持久性。Kafka中的消息可以持久化到硬盘上,这样可以防止数据的丢失。
- kakfa其实和传统的分布式队列系统不太一样:速度非常快,线性扩展,流式处理,一份消息可多个消费者都处理,也可以只由一个消费者处理。
- Kafka 只保证分区内的记录是有序的,而不保证主题中不同分区的顺序。每个 partition 分区按照key值排序足以满足大多数应用程序的需求。但如果你需要总记录在所有记录的上面,可使用仅有一个分区的主题来实现,这意味着每个消费者组只有一个消费者进程。
原文链接: