博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kafka解决了什么问题?
阅读量:7107 次
发布时间:2019-06-28

本文共 815 字,大约阅读时间需要 2 分钟。

hot3.png

个人认为, Kafka与Redis PUB/SUB之间最大的区别在于Kafka是一个完整的系统,而Redis PUB/SUB只是一个套件(utility)——没有冒犯Redis的意思,毕竟它的主要功能并不是PUB/SUB。

先说Redis吧,它首先是一个内存数据库,其提供的PUB/SUB功能把消息保存在内存中(基于channel),因此如果你的消息的持久性需求并不高且后端应用的消费能力超强的话,使用Redis PUB/SUB是比较合适的使用场景。比如官网说提供的一个网络聊天室的例子:模拟IRC,因为channel就是IRC中的服务器。用户发起连接,发布消息到channel,接收其他用户的消息。这些对于持久性的要求并不高,使用Redis PUB/SUB来做足矣。

而Kafka是一个完整的系统,它提供了一个高吞吐量、分布式的提交日志(由于提供了Kafka Connect和Kafka Streams,目前Kafka官网已经将自己修正为一个分布式的流式处理平台,这里也可以看出Kafka的野心:-)。除了p2p的消息队列,它当然提供PUB/SUB方式的消息模型。而且,Kafka默认提供了消息的持久化,确保消息的不丢失性(至少是大部分情况下)。另外,由于消费元数据是保存在consumer端的,所以对于消费而言consumer被赋予极大的自由度。consumer可以顺序地消费消息,也可以重新消费之前处理过的消息。这些都是Redis PUB/SUB无法做到的。

最后总结一下,

Redis PUB/SUB使用场景:
1. 消息持久性需求不高
2. 吞吐量要求不高
3. 可以忍受数据丢失
4. 数据量不大

Kafka使用场景:

上面以外的其他场景:)
1. 高可靠性
2. 高吞吐量
3. 持久性高
4. 多样化的消费处理模型

转载于:https://my.oschina.net/u/3917490/blog/1926973

你可能感兴趣的文章
QT程序打包发布
查看>>
迭代平方根
查看>>
第六次作业—— Web功能测试(含Selenium IDE实验)
查看>>
mysql字符串的常用函数(截取和拼接)
查看>>
Flex布局教程
查看>>
MongoDB索引的种类与使用
查看>>
CSS基础
查看>>
4-27 参数原来还有很多没有理解 比较详细的解释
查看>>
并发编程的三大注意事项是什么?
查看>>
CentOS 7下MySQL服务启动失败的解决思路
查看>>
UVA1225 UVALive3996 Digit Counting
查看>>
谷歌代码库已超过 20 亿行代码,他们是如何管理的?
查看>>
5/30 c语言中的位运算
查看>>
获取周一还是周日作为首日
查看>>
Android闹钟服务详解
查看>>
在代码中,获取Entity Framework生成的T-SQL查询语句
查看>>
面试收集--关于链表的一些面试题
查看>>
bootstrap 标签切换
查看>>
bootstrap01登录小例子
查看>>
hive
查看>>