rocketMq和kafka的架构区别
概述
其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比。
这篇博文主要讲清楚kafka和rocketMq的两个不同点,1、rocketMq的namesvr和kafka的zookeeper对比;2、kafka为什么比rocketMq有更大的吞吐量。如果能够讲清楚上面两个问题我觉得就已经很满足了。
最后,文章引入的参考文章里面有一些比较好的链接,有兴趣的话可以好好看看,里面其实有些地方比我讲解的更深入。
namesrv VS zk
1、我们可以对比下kafka和rocketMq在协调节点选择上的差异,kafka通过zookeeper来进行协调,而rocketMq通过自身的namesrv进行协调。
2、kafka在具备选举功能,在Kafka里面,Master/Slave的选举,有2步:第1步,先通过ZK在所有机器中,选举出一个KafkaController;第2步,再由这个Controller,决定每个partition的Master是谁,Slave是谁。因为有了选举功能,所以kafka某个partition的master挂了,该partition对应的某个slave会升级为主对外提供服务。
3、rocketMQ不具备选举,Master/Slave的角色也是固定的。当一个Master挂了之后,你可以写到其他Master上,但不能让一个Slave切换成Master。那么rocketMq是如何实现高可用的呢,其实很简单,rocketMq的所有broker节点的角色都是一样,上面分配的topic和对应的queue的数量也是一样的,Mq只能保证当一个broker挂了,把原本写到这个broker的请求迁移到其他broker上面,而并不是这个broker对应的slave升级为主。
4、rocketMq在协调节点的设计上显得更加轻量,用了另外一种方式解决高可用的问题,思路也是可以借鉴的。
关于吞吐量
1、首先说明下面的几张图片来自于互联网共享,也就是我后面参考文章里面的列出的文章。
2、kafka在消息存储过程中会根据topic和partition的数量创建物理文件,也就是说我们创建一个topic并指定了3个partition,那么就会有3个物理文件目录,也就说说partition的数量和对应的物理文件是一一对应的。
3、rocketMq在消息存储方式就一个物流问题,也就说传说中的commitLog,rocketMq的queue的数量其实是在consumeQueue里面体现的,在真正存储消息的commitLog其实就只有一个物理文件。
4、kafka的多文件并发写入 VS rocketMq的单文件写入,性能差异kafka完胜可想而知。
5、kafka的大量文件存储会导致一个问题,也就说在partition特别多的时候,磁盘的访问会发生很大的瓶颈,毕竟单个文件看着是append操作,但是多个文件之间必然会导致磁盘的寻道。
参考文章
分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
中国制造2025—主攻智能制造,您的网络准备好了吗?
在日前召开的第十二届全国人大第五次会议上,李克强总理在政府工作报告中再次强调要以创新引领实体经济转型升级,深入实施《中国制造2025》,加快大数据、云计算、物联网应用,以新技术新业态新模式,推动传统产业生产、管理和营销模式变革。把发展智能制造作为主攻方向。智能制造必将为整个制造业的方方面面带来一场全新的变革。 智能制造,就是要将工业环境中参与制造过程的各个环节连接起来:如机器设备、产品、系统和人员。而物联网则能够提高企业的竞争力,帮助企业进一步推进制造工艺的自动化,收集和分析可供企业用来生产定制产品的数据以满足特定客户需求。 为了实现向智能制造的转型,企业不仅需要利用云计算,还需要对稳定的数据安全环境进行投资,分析现有IT基础设施,确保满足物联网的需求。企业需要先为自身的网络、分支机构和远程站点打好基础,同时制订一个强大的可视化战略。 网络架构 只有企业的网络变得更加灵活和敏捷,才能成功地使用数字技术。当然说来容易,做来难。比如智能工厂,越来越多的设备连接在一起,产生出数十亿台新终端,与应用进行交互并传递信息,这种不灵活的复杂网络变得难以控制。 许多企业将信息存储在云端及本地系统中——...
- 下一篇
对标且兼容以太坊,DFINITY如何描绘一个无限吞吐量的区块链计算机蓝图?
“2009年到2014年,比特币在加密经济世界大行其道。随后三年,行业出现了许多区块链应用,并作为金融科技的一个重要分支得到公众的关注。步入2017年,区块链迎来第三个阶段——区块链应用大规模落地。”在近期上海峰会,以太坊(Ethereum)创始人Vitalik Buterin揭示了区块链发展的三个阶段。 同时,他还抛出一个疑问:当前概念验证层出不穷,但是为什么还未出现真正的大规模应用?“最重要的阻碍因素是技术障碍,过去三四年需要我们普及区块链,但现在要做的是改变区块链本身”,“技术的限制比监管的限制更加严重。” 所以我们能看到两大区块链社区在不断改进基础架构,比特币社区提出闪电网络和多次硬分叉,以太坊有大都会计划与Plasma。此外,还有一批人他们选择跳出这两大势力范围,试图创造基础架构更优的新一代开源的区块链平台。 Tom Ding (丁磊)是其中之一,他是String Labs(密码学和分布式计算实验室) 的联合创始人和CEO。String Labs 总部位于硅谷,由来自斯坦福、耶鲁大学、谷歌、以太坊基金会等科学家和工程师组成,还是是BCG波士顿咨询Dvolution和EEA企业...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8