关键词:
消息中间件
消息中间件是分布式系统中重要的组件,本质就是一个具有接收消息、存储消息、分发消息的队列,应用程序通过读写队列消息来通信。
在电商中,如订单系统处理完订单后,把订单消息发送到消息中间件,由消息中间件将订单消息分发到下游子系统(如物流、积分、通知等)。订单系统和下游子系统通过消息中间件进行通信,减少他们之间的耦合,增加系统稳定性降低系统调用延迟。
概述
类别 | 简介特性 | 适用场景 |
Kafka | 具有大规模、高可靠、高并发访问、可扩展 | 适用于日志采集、实时数据管道、流式数据处理、第三方解耦、流量削峰等场景 |
RabbitMQ | 支持广播、事务消息、消息路由、死信队列、优先级队列 | 适用于秒杀、流控、系统解耦等场景 |
RocketMQ | 提供顺序、延迟、定时、重投、死信、事务消息 | 适用于电商、金融等场景 |
对比分析
没有最好的技术,只有最合适的技术,每个消息中间件都有自己的优劣。
- 性能
类别 | QPS |
Kafka | 单机QPS能够达到百万级别,吞吐量比RabbitMQ要高出1\\~2个数量级 |
RabbitMQ | 单机QPS在万级别 |
RocketMQ | 性能介于RabbitMQ与Kafka之间,单broker几万QPS |
- 数据可靠性
类别 | 可靠性 |
Kafka | 采用多副本机制,数据可靠性较高 |
RabbitMQ | 采用多副本机制,数据可靠性较高 |
RocketMQ | 采用3副本机制,数据可靠性较高。采用Raft一致性协议,数据一致性高于另外2个。 |
- 消息特殊功能
类别 | 功能特性 |
Kafka | 支持持久化、事务消息、单分区级别的消息顺序性 |
RabbitMQ | 支持持久化、事务消息、延迟队列、死信队列、优先级队列 |
RocketMQ | 支持持久化、事务消息、延迟队列、死信队列、消息重试、单队列内消息有序 |
- 消费模式功能
类别 | 功能特性 |
Kafka | 支持消息过滤、客户端主动拉取的消费模式、按照offset和timestamp进行消息回溯、广播消费 |
RabbitMQ | 支持客户端主动拉取和服务端推送的消费模式、广播消费、不支持消息回溯 消息被消费后就会被删除 |
RocketMQ | 支持消息过滤、客户端主动拉取和服务端推送的消费模式、消息回溯、广播消费 |
- 客户端支持
类别 | 功能特性 |
Kafka | 只支持kafka自定义协议、采用Scalc和java编写支持多种语言的客户端、支持SSL/SASL认证和读写权限的控制 |
RabbitMQ | 支持MQTT,STOMP等协议、采用Erlang编写支持多种语言客户端、支持SSL/SASL认证和读写权限的控制 |
RocketMQ | 兼容RocketMQ协议、支持多种语言客户端、支持SSL/SASL认证 |
- 服务可用性
类别 | 特性 |
Kafka | 采用集群部署,分区与多副本的设计。使得单代理宕机对服务无影响,且支持消息容量的线性提升。 |
RabbitMQ | 支持集群部署,集群代理数量有多种规格 |
RocketMQ | 采用Raft一致性协议,单台机器宕机会重新选主,可用性高。 |
总结
- kafka:采用拉取(Pull)方式消费消息,吞吐量相对更高。适用于海量数据收集与传递场景,例如日志采集和集中分析。
- RabbitMQ:基于Erlang语言开发,不利于做二次开发和维护,适用于对路由、负载均衡、数据一致性、稳定性和可靠性要求很高,对性能和吞吐量的要求没那么高的场景。
- RocketMQ:基于java语言开发,适用于对数据可靠性、数据实时性要求高、Topic数量非常多的场景。如订单、交易、充值、流计算、消息推送、日志流式处理、binlog分发等。
转:kafkarabbitmqrocketmq消息中间件的对比——消息发送性能(阿里中间件团队博客)
from:http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/ 引言分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品RocketMQ(MetaQ的... 查看详情
kafkarabbitmqrocketmq等消息中间件的对比——消息发送性能和区别
Kafka、RabbitMQ、RocketMQ等消息中间件的对比——消息发送性能和区别那么,消息中间件性能究竟哪家强?带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较。Kafka是LinkedIn开源的分布式发布-订... 查看详情
产品生产成本核算中,生产订单差异计算逻辑及生产订单成本公式
生产订单差异计算订单差异有两类,即:控制差异和结算差异。结算差异指当订单完工时订单中实际成本减已转入库存的完工产品成本(入库的标准成本)的差异,此差异月末结算到库存,记入财务总帐。控制差异指当订单完工... 查看详情
体感差异造成的思想差异
....0px;font:36.0px"PingFangSC"}span.Apple-tab-span{white-space:pre}2、体感差异造成思想差异在特定的人群之间,体感的差异是非常明显的。比如儿童、中年人、老人,由于身体状况的差异,他们之间的体感差异是明显的。跌倒这一情况对儿童可... 查看详情
差异表达基因分析:差异倍数(foldchange),差异的显著性(p-value)
参考技术ADifferentialgeneexpressionanalysis:差异表达基因分析Differentiallyexpressedgene(DEG):差异表达基因差异表达分析是目前比较常用的识别疾病相关miRNA以及基因的方法,目前也有很多差异表达分析的方法,但比较简单也比较常用的是... 查看详情
php 检查文件差异是不是存在并获取文件差异
】php检查文件差异是不是存在并获取文件差异【英文标题】:phpcheckfilediffexistandgetfilediffphp检查文件差异是否存在并获取文件差异【发布时间】:2013-05-0807:29:31【问题描述】:如何使用php检查和查找两个文件之间的差异(例如svnd... 查看详情
oracle sql上月差异和上年末差异
】oraclesql上月差异和上年末差异【英文标题】:Previousmonthdifferenceandlastyear-enddifferenceinoraclesql【发布时间】:2014-11-2609:42:51【问题描述】:我需要编写一个查询来计算上月末和月末之间的差异以及去年年底和月末之间的差异。我... 查看详情
sap价格差异来自哪里
参考技术A主要来自采购价格差异(采购环节),生产成本差异(生产环节),物料转物料和库存盘点差异(库存管理差异),价格重估差异(价格管理环节)。总体就是这些了。本回答被提问者和网友采纳 查看详情
智感差异造成的思想差异
....0px;font:36.0px"PingFangSC"}span.Apple-tab-span{white-space:pre}2、智感差异所造成的思想差异人与人之间,知识、经验的差异是很大的。由此造成人与人之间的智感差异也是很大的。虽然很多时候个人的思想决定了个人的智感,反过来智感也... 查看详情
sap原材料和库存商品结算不一致
参考技术A存货差异以及差异处理1.存货差异的产生(1)标准价格:采购订单收货时,采购订单金额/采购订单数量*收货数量与标准价格*收货数量有差异,差异计入PRD(2)标准价格:发票过账行项目金额与采购订单收货行项目金... 查看详情
sap发票校验后出现材料成本差异一分钱的差异,请问啥情况?
MIRO的时候吗?那就是发票和收货有1分钱的差异,可能是税造成的吧。可以手动调整,但是要以实际发票上的金额为准。差异会自动进到差异科目,没关系的追问我知道,发票检验小差异是吧追答是的,和GR/IR金额的差异参考... 查看详情
如何使用 Python 计算差异差异方法的置信区间?
】如何使用Python计算差异差异方法的置信区间?【英文标题】:HowtocomputetheconfidenceintervaloftheDifferenceinDifferencesmethodusingPython?【发布时间】:2021-03-2715:05:11【问题描述】:我正在尝试分析实验前后每位用户的总活跃分钟数。在这... 查看详情
查找行之间的绝对差异并将差异与其他行进行比较
】查找行之间的绝对差异并将差异与其他行进行比较【英文标题】:Findingabsolutedifferencebetweenrowsandcomparingthedifferencewithotherrows【发布时间】:2019-12-3108:24:39【问题描述】:我有这个数据框。df=pd.DataFrame(\'userId\':[10,20,10,20,10,20,60,90,... 查看详情
foldchange(差异倍数),p-value(差异的显著性)
foldchange的意思是样本质检表达量的差异倍数,log2foldchange的意思是取log2,这样可以可以让差异特别大的和差异比较小的数值缩小之间的差距。Q-value,是P-value校正值,P值是统计差异的显著性的。Q值比P值更严格的一种统计。Themea... 查看详情
查看文件差异
...gitdiff文件夹的名称 查看文件夹在工作区和暂存区的差异(如果后面不加文件夹名则为查看文件夹中所有的文件在工作区与暂存区的差异)gitdiff>dif.html将差异结果导出在dif.html文件当中,方便查看gitdiff--cached查看暂存区和... 查看详情
剪辑库差异问题
】剪辑库差异问题【英文标题】:ClippingLibraryDifferenceissue【发布时间】:2015-12-1219:05:59【问题描述】:我从这个网站开始使用剪辑库:http://sourceforge.net/projects/polyclipping/我在Unity(C#)中工作。一切都很好,联合,交叉点,差异......... 查看详情
计算两个时间戳之间的差异并获得 unix 时间戳的差异
】计算两个时间戳之间的差异并获得unix时间戳的差异【英文标题】:calculatedifferencebetweentwotimestampandgetdifferenceinunixtimestamp【发布时间】:2014-05-0407:58:21【问题描述】:我想计算两个dateTime之间的差异,一个是用户提交的日期,另... 查看详情
基因差异表达分析方法
参考技术A问题一:怎么判断差异表达的基因判断差异表达的基因:不同基因控制合成的蛋白质不同,蛋白质不同表现的生物性状就不同,从而表达出了差异.问题二:怎么判断差异表达的基因真核生物中,从个体的生长、发育、衰... 查看详情