1. 聚能聊>
  2. 话题详情

《RocketMQ原理与实战解析》作者与你探讨如何选择分布式消息队列

Kafka, RocketMQ, RabbitMQ, ActiveMQ,ZeroMQ 等,哪个最合适?

首先明确自己的需求,使用分布式消息队列的主要目的是什么

分布式消息队列,可以提供应用解耦、流量消峰、消息分发等功能,是大型互联网服务架构里标配的中间件。现在互联网"微架构"模式兴起,原有大型集中式的IT服务因为各种弊端,通常被分拆成细粒度的多个“微服务”,这些微服务可以在一个局域网内,也可能跨机房部署。

消息队列似乎很简单,自己开发一个是否可行呢

消息队列简单来说,就是基础数据结构课程里“先进先出”的一种数据结构,但是如果要消除单点故障,保证消息传输的可靠性,并且还能应对大流量的冲击,对消息队列的要求就很高了。

欢迎大家聊聊自己使用分布式消息队列的经验和踩过那些坑

顺便介绍一下我的这本书《RocketMQ原理与实战解析》,积累多年经验所写,RocketMQ开发团队鼎力推荐,帮助读者深入了解分布式消息队列,用好RocketMQ,也可以根据自己的业务更改源码,开发出自己特定功能的消息中间件。
_

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    RocketMQ原理与实战解析 x 10

74个回答

0

zhangtian 已获得RocketMQ原理与实战解析 复制链接去分享

分享一下我的mq实战经验,主要针对这几个:Kafka, RocketMQ, RabbitMQ, ActiveMQ
RabbitMQ:强大,收费,适配性好,适合在企业里面做一些主数据同步一类的业务,业务特点是数据实时性要求高,不允许最终一致性这种场景,而且还要对生产、消费有强烈的监管场景。不过性能较差,不要想着在高并发下用。
ActiveMQ:1代产品总是出问题,2代产品没发展起来。
RocketMQ:开源、免费,性能非常好,有源码,有业务需求可以自己搞,我们企业中用的业务适配层,权限、安全都是我自己套上去的,蛮不错。不过至今有个BUG没解决,在很低的概率下,消息落盘会出现写错误。这时候只要master节点挂了,就会出现大批量消息重复消费的情况。虽然消费端做了幂等去重,但是一下子回溯几百万,也忒耽误时间了。还有就是适配性不好,我开发了N多与其他开源组件的适配。
kafka:开源、免费,虽然很多评测说kafka的压力模型有问题,但从最新的产品来看,还是能干活的。最最主要的是,很多开源组件与mq对接的时候,kafka是默认适配的,简单配置就能行啊。
总的来说,在高并发的交易场景下,RocketMQ是首先。但是涉及到大数据领域,选Kafka也没错(人总有犯懒的时候,写适配器已经写蒙了)

zhangtian 回复

不送奖品了么?

评论
0

老月亮 已获得RocketMQ原理与实战解析 复制链接去分享

一个新手,参与更多是理论方面的操作,kafka、rabbitmq、rocketmq这三个东东理论原理似乎都是一样的,个人理解根据出生的时间顺序,rabbitmq和rocketmq在对kafka的进行完善和改进,不知道这么理解是否正确?

0

微wx笑 已获得RocketMQ原理与实战解析 复制链接去分享

欢迎大家聊聊自己使用分布式消息队列的经验和踩过那些坑
只在使用一个WebRTC协作套件时依赖rabbitmq,所以用了一下,按照官方文档操作基本没问题。
但就我的一篇文章 CentOS 7.2下 RabbitMQ 安装记录 来看 ,还是有很多人在安装时遇到问题。

0

1203122211306023 已获得RocketMQ原理与实战解析 复制链接去分享

消息中间件之前早期我们同在本机进程通信上,封装ipc队列数据结构,双通道、多通道都可以,然后两边进程通过共享内存访问方式完成应用通信。当时也支持业务标签映射队列通道,类似topic,这些早期的尝试其实都是今天分布式的雏形。现在中间件上叠加了更多的功能,利用了网络能力,第三方存储能力承载了更大量的消息在进程间的通信。

0

海阔天空yy 已获得RocketMQ原理与实战解析 复制链接去分享

欢迎大家聊聊自己使用分布式消息队列的经验和踩过那些坑
我就说两种我调研过的吧
activemq: 虽然不是分布式的,但他给人的感觉还是可以的,一个队列TOPIC可以多人同时生产和消费, 让生产者和消费都可以做负载.遇到的坑就是不能分布式,只能主从,且主挂掉后性能也会下降,持久化后性能也会急剧下将,
kafka: 是分布式的也实现了负载,但会有重复消费的可能性(概率比较小,大并发测试情况下遇到过),也许是分布式的原因。还有就是,他是以将分数分块的方式实现多人同时消费,也就是一个分块只允许一个消费者,但如果这个消费者挂掉,这个分块的数据就没人读了

也许是我调研的不对,还希望有大牛指正。

0

雷侠 已获得RocketMQ原理与实战解析 复制链接去分享

最近就在使用阿里云的RocketMQ,因为SDK都是封装好了使用起特别方便,基本上就是一发一收在进行其他的业务处理就好了,不过目前我只是使用的TCP请求来发送和接受消息。

可惜的是目前我还只是会用一点点,并不是太熟悉这个MQ,对着方面的了解是少之又少,根本就毫无经验可言,不过我对里面的源码很感兴趣,真想好好的去研究一番。使用MQ不只是了解为了写业务代码,更应该去了解它是怎么样的,如果在使用的过程中出现了问题,就可以凭借自己对源码的了解可以去解决这个问题。

我更希望了解大家对RocketMQ的理解,想知道你们是如何使用和避免坑的,吸收你们的经验和精华!

3

黄二刀 复制链接去分享

我是做驾驶员培训信息化的,一开始容纳的驾校较少,学员总数也不大,所以在单个系统里集成了学员管理、财务管理、培训管理、考试管理、客户管理等大量功能,初步阶段,由于数据量不多,不会觉得有什么影响,到了后期,纳入的驾校越来越多,数据量猛涨,系统经常出现请求超时、内存溢出、死锁、数据读取超时等各种故障,单系统的缺陷渐渐暴露,大而臃肿的系统,促使我想去把它分拆成各个子系统,做成基于消息的驱动,也研究了RabbitMQ,但还是没有打定主意采用哪种分布式消息队列技术,因为没有一个全面而深入的了解和好的借鉴,那问题就来了,我需要一本分布式消息队列的技术书籍来深入学习。

1

1714494090666368 复制链接去分享

无处不在周梦康了解一下

leon0204 回复

这位老哥值得一本MQ奖品

评论
0

1821795537404950 复制链接去分享

新手!网站已提备案了为什么用不了?
9163b498961b4816b321555c1e63efbb_9e9f0df2cff9441da5c81d19b66c5174.jpg

浮生递归 回复

备案审核通过需要20天左右,通过了会有短信和邮件提醒

老离 回复

提交又不代表审核过了,需要备案审过通过了,给你发备案号了才算ok

评论
0

dxxssg 复制链接去分享

事物消息不开源啊!如何保证不丢消息?双同步来保证?这样性能很差!消费者如何指定broker消费?

智中 回复

事务消息对性能影像很大,没有比较好的通用实现方式,结合应用场景自己实现比较好

评论
0

风云际会666 复制链接去分享

已经存在的消息不能清空啊,测试时产生几十万消息必须等消费完,不知道是不是有隐藏的操作

智中 回复

可以设置offset,跳过一段时间内的消息

评论
0

1176629109480145 复制链接去分享

您好,关于消息队列我一直很感兴趣。但操作上还是一个新手,感觉市场上关于消息队列的书也是很少。首先非常感谢您出了这本书,让我有机会看书学习。想请问您一个问题:据我了解mq系列似乎不适于处理有依赖性的多个请求的,不要求顺序,而Kafka是可以保证顺序的,想请问一下mq系列是为了提升速度设计并行接收的吗?那么是设计结构是怎样实现的呢?谢谢。

智中 回复

RocketMQ可以像kafka一样保证顺序,具体使用方法书中有介绍

评论
1

leon0204 复制链接去分享

要说各个MQ哪个最合适?还是要看具体业务场景,我们公司自己在用的就是 rabbitmq ,用在 elasticSearch 索引同步,短信任务,后台会有 worker 来消费队列 区分task ,ack 类型消费,这东西难点在于数据一致性,做过的都懂,数据幂级上去,什么问题就都来了

1

浮生递归 复制链接去分享

欢迎大家聊聊自己使用分布式消息队列的经验和踩过那些坑
大型互联网架构配备里标准的中间件,所以小系统里就用不到了。我这开发的基本都是小系统,消息并发数都很小。虽然知道消息队列这东西很好用,但是却一直没机会用上。
很早就看到阿里云的消息队列服务,最初还以为是短信服务,差点误解了。后来了解了一些后,感觉这真是个好东西。不过并不知道具体如何实施。然后,由于互联网应用的兴起,越来越多的人,提到rocketMQ,并且我知道了apache rocketMQ是阿里开源的一款中间件就兴奋不已。

而现在,看到了聊主出了这本书来帮助大家解惑。很希望通过楼主的这本书,深入了解下rocketMQ是如何处理消息的优先级,以及都有哪些消息持久化方式。为以后在大型项目里,推行rocketMQ做好技术储备。

1

longking 复制链接去分享

博主能否提供各个产品优劣对比表?

0

1176629109480145 复制链接去分享

实在抱歉,网络问题不小心发了那么多,似乎没有办法删除,还请见谅!

管理贝贝 回复

我把重复的删掉了

评论
0

1730722219229312 复制链接去分享

我在Python Django用过 RabbitMQ,没有用过其他的消息队列。希望有机会拜读一下这本书~~~

0

lamper 复制链接去分享

之前接入业务的日志用的elk,中间加一层kafka。据了解说kafka是顺序写磁盘的方式,比写内存的速度还快。kafka的集群需要zk来进行调度,是不是也可以换成别的方式进行调度。它的数据是落在磁盘中的,它是怎么保证写不会丢数据的呢?

0

sheldong 复制链接去分享

我把队列当缓存用了。以前有个项目,就是给各个参赛者点赞,因涉及到个人利益,刷票者众,我说加验证码,加各种措施,结果领导想一方面造声势,一方面又不想点赞太麻烦,最后只允许ip限制,众所周知,限制ip等于没有限制,因此瞬间就会涌进n多投票请求,开始还好,限制ip时,去数据库比对影响不大,当点赞总数到了几千万后系统就响应缓慢了,因为比对ip耗时,前端一个请求过来,一秒才有回应,而且越来越慢。
最后我把加入队列机制,异步去处理点赞比对逻辑。

0

salamandermh 复制链接去分享

用过rabbitmq,稳定性非常好,RocketMQ还没用过,但阿里开源的,应该是精品,所以决定去用用

4