设为首页 收藏本站
查看: 1056|回复: 0

[经验分享] 常用mq对比及rocketmq、kafka选型

[复制链接]

尚未签到

发表于 2019-1-31 09:10:53 | 显示全部楼层 |阅读模式
  一、常用MQ对比

  


  上述来自CSDN搜索博客中的图片。
  


  上述来自阿里云栖社区搜索博客中的图片。
  

  二、rocket、kafka选型
  

  (以下汉字内容是从下述各个网站中摘取出的个人认为的重点内容。)

  

  1、Kafka vs RocketMQ ——消息及时性对比
  

  https://yq.aliyun.com/articles/62836
  

  在Kafka里面,Maser/Slave是选举出来的!!!RocketMQ不需要选举!!!
  具体来说,在Kafka里面,Master/Slave的选举,有2步:第1步,先通过ZK在所有机器中,选举出一个KafkaController;第2步,再由这个Controller,决定每个partition的Master是谁,Slave是谁。
  这里的Master/Slave是动态的,也就是说:当Master挂了之后,会有1个Slave切换成Master。
  而在RocketMQ中,不需要选举,Master/Slave的角色也是固定的。当一个Master挂了之后,你可以写到其他Master上,但不会说一个Slave切换成Master。
  这种简化,使得RocketMQ可以不依赖ZK就很好的管理Topic/queue和物理机器的映射关系了,也实现了高可用。
  

  2、RocketMQ与kafka对比(18项差异)
  

  https://yq.aliyun.com/articles/73165?spm=5176.100239.blogcont62836.34.lxBuKC
  

  淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下还有诸多特性不满足,为此我们重新用Java语言编写了RocketMQ,定位于非日志的可靠消息传输(日志场景也OK),目前RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。
  

  3、Kafka、RabbitMQ、RocketMQ发送小消息性能对比
  

  https://yq.aliyun.com/articles/62831?spm=5176.100239.blogcont62836.16.lxBuKC
  

  不断增加发送端的压力,直到系统吞吐量不再上升,而响应时间拉长。这时服务端已出现性能瓶颈,可以获得相应的系统最佳吞吐量。
  

  在服务端处理同步发送小消息、无订阅组消费的性能上,Kafka>RocketMQ>RabbitMQ。
  

  4、Kafka vs RocketMQ——Topic数量对单机性能的影响
  

  https://yq.aliyun.com/articles/62832?spm=5176.100239.blogcont62836.17.lxBuKC
  

  不断增加发送端的压力,直到系统吞吐量不再上升,而响应时间拉长。此时服务端出现性能瓶颈,获取相应的系统最佳吞吐量,整个过程中保证消息没有累积。
  

  Kafka在Topic数量由64增长到256时,吞吐量下降了 98.37% 。
  RocketMQ在Topic数量由64增长到256时,吞吐量只下降了 16% 。
  为什么两个产品的表现如此悬殊呢?这是因为Kafka的每个Topic、每个分区都会对应一个物理文件。当Topic数量增加时,消息分散的落盘策略会导致磁盘IO竞争激烈成为瓶颈。而RocketMQ所有的消息是保存在同一个物理文件中的,Topic和分区数对RocketMQ也只是逻辑概念上的划分,所以Topic数的增加对RocketMQ的性能不会造成太大的影响。
  

  测试结论
  在消息发送端,消费端共存的场景下,随着Topic数的增加Kafka吞吐量会急剧下降,而RocketMQ则表现稳定。因此Kafka适合Topic和消费端都比较少的业务场景,而RocketMQ更适合多Topic,多消费端的业务场景。
  

  5、Kafka vs RocketMQ——单机系统可靠性
  

  https://yq.aliyun.com/articles/62833?spm=5176.100239.blogcont62836.19.lxBuKC
  

  测试结论
  1. 在Broker进程被Kill的场景, Kafka和RocketMQ都能在保证吞吐量的情况下,不丢消息,可靠性都比较高。
  2. 在宿主机掉电的场景,Kafka与RocketMQ均能做到不丢消息,此时Kafka的吞吐量会急剧下跌,几乎不可用。RocketMQ则仍能保持较高的吞吐量。
  3. 在单机可靠性方面,RocketMQ综合表现优于Kafka。
  


  

  同步刷盘是在每条消息都确认落盘了之后才向发送者返回响应;而异步刷盘中,只要消息保存到Broker的内存就向发送者返回响应,Broker会有专门的线程对内存中的消息进行批量存储。所以异步刷盘的策略下,当机器突然掉电时,Broker内存中的消息因无法刷到磁盘导致丢失。
  

  本期测试中,RocketMQ比Kafka具有更高的单机可靠性。对于普通业务,部署异步刷盘模式可以得到更高的性能;对于丢消息零容忍的业务,则更适用RocketMQ同步刷盘的模式,在享受高可靠性保障的同时,又能拥有较高的吞吐量。
  

  6、万亿级数据洪峰下的分布式消息引擎
  

  https://yq.aliyun.com/articles/165103?spm=5176.100244.teamhomeleft.18.RJbTZr
  

  消息引擎围绕着RocketMQ内核,在阿里内部有三大块:Notify解决事务消息,采用服务端push模型,用于交易核心消息分发;MetaQ用于有序消息,采用pull模型,可以解决海量消息堆积;Aliware MQ是RocketMQ商业版,支持公有云、金融云、私有云、聚石塔。
  

  针对慢请求、长尾效应,阿里给出的解决方案是:低延迟存储,使用预分配+内存锁,读写分离,二次异步;限流、熔断,降级,秒级隔离;多副本高可用机制,Zab、Paxos/Raft,自动/手动切换,容灾演练。
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-669871-1-1.html 上篇帖子: Kafka(七)消费者偏移量 下篇帖子: bireme数据源同步工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表