RabbitMQZeroMQ和Kafka是一个层级的东西吗?
RabbitMQ、ZeroMQ和Kafka是一个层级的东西么?这个还真心不清楚,对于RabbitMQ和Kafka在项目开发中或多或少使用过,而ZeroMQ之前都没有听说过,更何谈了解使用呢?接下来我就简单说说我对RabbitMQ和Kafka的认识,以及相关的使用场景。
先来说说RabbitMQ,这个使用的业务场景比较广泛,所有传统意义上的消息队列解耦的情况几乎都可以用RabbitMQ来解决。记得之前做用户登录的活跃人次统计时,由于初期的设计不支持这种报表查询,而且报表的定制特性不适合通过基础框架来做开发,随后的方案就是通过解析登录日志文件来生成用户的登录记录,然后通过RabbitMQ将解析完成的记录发给做报表的团队,完成任务间的协同开发。定时任务解析、RabbitMQ解耦,较为从容的完成了月登录人次的统计,是应用解耦使用的典型场景。经过实践,RabbitMQ在三个比较典型的场景中使用较多,即异步处理、应用解耦、流量削峰。
再来说说Kafka,Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强。其典型的应用场景是用户访问日志的存储和使用,结合storm流组件进行访问日志、点击流日志的实时流量,以及其他类似的业务场景。典型的使用场景有:日志收集、消息系统、用户活动跟踪、运营指标、流式处理等。kafka的特性如下:
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。- 可扩展性:kafka集群支持热扩展- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)- 高并发:支持数千个客户端同时读写综合考虑,RabbitMq比kafka的对比如下:RabbitMq比Kafka成熟,在可用性上,稳定性上,可靠性上,RabbitMq超过Kafka;Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性;Kafka的性能(吞吐量、tps)比RabbitMq要强,两者在这方面没有可比性。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有