当前位置:   article > 正文

关于kafka是否可以替代rabbitmq的一些猜想?_设计新系统 需要用kafka替代 rabbitmq吗?

设计新系统 需要用kafka替代 rabbitmq吗?

众所周知,kafka为了快速的读写,进行了零拷贝、mmap、单个partition中只能被一个consumer读取等等操作,由此牺牲了全局有序性和事务性等保证。

于是我就有一个猜想,如果手动去维护kafka的100%投递、幂等性等特性是否就可以使得kafka的读写速度高于rabbitmq,而且又同时具有rabbitmq的良好事务性呢?

知道我想到RocketMQ的设计,我感觉这就是对我的猜想的印证:

下面是关于阿里云中间件对RocketMQ的介绍:
RocketMQ是阿里开源的消息中间件,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。
博客地址:http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/

RocketMQ对kafka的优化:除了常规的全局有序行、幂等性、分布式一致性等操作。并解决了kafka多topic卡顿情况。

博客:http://jm.taobao.org/2017/03/03/RocketMQ-future-idea/

RocketMQ还对kafka的延迟(jvm卡顿和Page Cache)、降流保护(降流算法+Hystix的熔断思想)、高可用(故障转移和故障恢复等措施)

博客:http://jm.taobao.org/2017/01/26/20170126/

毕竟RabbitMQ是一个重量级框架,慢主要是其对事务性的支持考虑得过于全面,使得其性能损失很大。我个人感觉RocketMQ就是对kafka和RobitMQ得一个折中的实现。

就好像什么东西都会有它的缺陷一样,关于RabiitMQ和Kafka还有RocketMQ应对crash的能力:RocketMQ在一定层度上可以保证正常执行的时候的处理数据的不丢失等,但是面对crush的场景,也会出现数据丢失等情况。下面是断电的情况下,Kafka和RocketMQ都存在数据丢失。

博客原文:http://jm.taobao.org/2016/04/28/kafka-vs-rocktemq-4/
在这里插入图片描述

引用某位大牛的博客:为了保证RabbitMQ在退出或者crash等异常情况下数据没有丢失,需要将queue,exchange和Message都持久化。

该文章说明了RabbitMQ如何应对crush的数据不丢失:https://blog.csdn.net/u013256816/article/details/60875666

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/983323
推荐阅读
相关标签
  

闽ICP备14008679号