深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

01|业界的主流消息队列是如何发展起来的?

你好,我是文强。
作为一个消息队列的老兵,我经常被团队的新同学或者客户的研发人员问:我希望在我们的业务中引入消息队列,应该选择哪一款合适?是不是用最近很火的 Pulsar 就好了,但是业务团队推荐用 RocketMQ 或 RabbitMQ,而大数据团队推荐用 Kafka,有没有什么选择的标准可以参考呢?
这个问题你之前一定疑惑过,可能也有了一套自己的选择标准,不过遇到这种情况,我都会先反问:你觉得消息队列是做什么的?
自从负责消息队列云服务之后,我接触了很多客户,发现基本 90% 以上的用户(大概率你也在其中),业务的数据量都不大,场景也不复杂。只用到了消息队列最基本的生产和消费功能,把消息队列当做缓冲分发的管道,基本不会用到消息队列的高级功能,比如死信队列、事务消息、延时消息等等。
所以,很多情况下,我们不需要很复杂的消息队列,有些时候甚至都不需要引入业界标准的消息队列产品。是不是和你之前的想法不太一致?今天我们就从这个有点反常识的观点开始讨论。

你真的需要标准消息队列吗?

我第一次用消息队列是在我负责游戏论坛开发的时候,有一个功能是需要把用户对帖子的评论和点赞数据发给下游分析。你可以想一下,如果你接到这个需求,会怎么做呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

消息队列的选择标准和实际应用一直备受关注。本文以作者文强的亲身经历为切入点,深入探讨了消息队列的发展历程及其在业界的应用。作者首先提出了一个引人深思的问题:是否真的需要标准消息队列?通过自身经历和案例分析,指出在简单场景下,非标准消息队列产品如Redis和MySQL也能满足需求。然而,当数据量大、场景复杂时,标准消息队列产品的高吞吐、持久化等特性就显得尤为重要。文章还介绍了消息队列的基本功能和高阶能力,并列举了业界常见的标准消息队列产品,如Kafka、RocketMQ、RabbitMQ等。通过作者的观点和案例,读者可以更好地理解消息队列的选择标准和适用场景,为实际业务应用提供了有益的参考。 此外,文章还从消息队列的发展脉络出发,抽象出了两条交织的发展路径:上层的需求变化和下层的架构演进。消息队列的发展趋势是消息 -> 流 -> 消息和流融合,以及单机 -> 分布式 -> 云原生/Serverless。随着业务场景的复杂化和数据量的增大,消息队列的架构也在不断演进,逐渐朝向云原生/Serverless方向发展。同时,文章还介绍了当前开源社区较多使用的消息队列产品,如RabbitMQ、Kafka、RocketMQ和Pulsar等,以及国内大厂自研的消息队列产品。 总的来说,本文通过作者的亲身经历和案例分析,深入探讨了消息队列的选择标准和实际应用,同时从消息队列的发展脉络出发,抽象出了消息队列的发展趋势,为读者提供了全面的消息队列发展概览和技术应用参考。文章内容丰富,涵盖了消息队列的技术特点和发展趋势,对读者了解消息队列的选择和应用具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • Geek_206e82
    我是做游戏的,目前我在使用pulsar,功能有瞬时消息,也有顺序消息,能同时满足这2个就pulsar了

    作者回复: 瞬时消息的特性确实很多主流消息队列都不支持,是一个很特殊的场景。 之前接触过公司内部的一个大型游戏团队,也是因为瞬时消息选择使用pulsar。

    2023-06-26归属地:广东
    2
    11
  • 顾庆隆
    文强老师,能不能讲一下Nats,Golang编写的消息队列,CNCF孵化的项目,设计上非常有特点,功能和性能都挺出色,与课程中四个消息队列想比,在分布式集群通信、消息持久化设计、集群互通和集群级联通信上别具一格,很想听听老师的分析。

    作者回复: 你这一说,我也很有兴趣分析一下。这个我记录一下,可能要放到最后了。这个MQ 目前主流比较少用。不过从技术设计上来看,是蛮有参考分析价值的。

    2023-06-27归属地:北京
    3
    7
  • 张申傲
    请问下老师,消息和流的本质区别是什么呢?我理解流也可以看作是大数据领域的业务消息,只不过消息体是日志、指标等等这些数据,为什么要强调消息和流的融合呢?

    作者回复: 我理解是商业化层面的考虑,文章中我有写了一下我的观点

    2023-06-26归属地:北京
    5
    6
  • 一一
    老师,你好,有没有可能带我们搭一个数据量相对大,并发量相对大的业务测试环境,再接入各种消息队列进行横向测评,对比使用消息队列和不使用消息队列的区别,这样,对我们这种传统行业,平时很少接触到高并发,大数据量的业务场景的小白来说,会不会更加直观,好理解一些?毕竟有了直观的数据,才能印象深刻。

    作者回复: 你能加一下微信群吗,我们在群里聊。这个是一个很有意思的case,我们现网也经常做这个事情。

    2023-06-30归属地:浙江
    9
    3
  • Geek.Kwok
    我司就在用 Kafka 当做一个业务消息总线在用,当然同时也用来传递日志。从运维成本的角度考虑,一家公司一般只会选择使用一个MQ。

    作者回复: 在我看来,业务侧的功能需求是第一考虑项。如果功能上一个MQ都能满足的话,选择只运维一个MQ是可以的,反之就得考虑是否运维多款MQ。

    2023-06-27归属地:上海
    3
  • OAuth
    我是做企业供应链的 主要的应用场景是做外围系统与供应链系统的异步数据交换 数据量不大 目前用的rocketmq

    作者回复: 业务消息类的消息队列,rocketmq我觉得是第一选择

    2023-06-26归属地:广东
    3
  • justxhk
    集群扩缩容慢、分区迁移需要 Rebalance、无法支持超多分区 kafka有这些问题是不是主要是因为计算和存储没分离

    作者回复: 集群扩缩容慢、分区迁移需要 Rebalance:是的,存算分离从理论上可以解决这些问题的。 无法支持超多分区:和存算分离关系不是特别大,主要和元数据存储(基于Zookeeper)、系统架构有关(比如单机分区的文件的存储方式、Controller等)。

    2023-07-10归属地:广东
    1
  • 杯莫停
    我们公司只用到了发布订阅场景,但数据吞吐量比较大,只用到了Kafka

    作者回复: 是的,很多用户都是这么用的。其实大部分用户的场景不复杂。

    2023-07-09归属地:四川
    1
  • 运维夜谈
    老师,请教个问题,数据量大选择消息队列,但有一个问题就是消息的消费效率取决于消费者,消费者消费不过来就导致消息积压,这这样也会影响业务,这如何避免? 另外,咱有微信群吗?

    作者回复: 我是这么理解的,这种有两种情况: 1. 瓶颈在MQ 2. 瓶颈在消费者 如果是1,就得考虑MQ的调优、扩容、扩分区或者换消息队列等 如果是2,得排查一下消费者的瓶颈在哪里,然后针对性处理 课程详情有一个微信群二维码,你可以加一下,群里刚好在讨论这个。

    2023-07-07归属地:广东
    1
  • 清泉
    感觉没什么人提到NSQ的,难道没什么人玩吗

    作者回复: 在我接触客户的过程中,确实有接触到用NSQ的客户,但是不多,感觉在国内看起来用的人不多。

    2023-06-28归属地:上海
    2
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部