前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如果把四个消息队列都拉到一个群里,他们会聊些什么?

如果把四个消息队列都拉到一个群里,他们会聊些什么?

作者头像
博文视点Broadview
发布2023-05-19 19:50:50
1900
发布2023-05-19 19:50:50
举报

这是我的第 64 篇原创文章

作者 | 悟空聊架构

来源 | 悟空聊架构(ID:PassJava666)

转载请联系授权(微信ID:PassJava)

本篇的灵感来自我超级喜欢的一篇文章:《如果把中国 442 位皇帝都放在一个群里面,他们会聊些什么》。其实我的第一篇文章就是用这种方式写的《悟空聊无事务》,这也是我的公众号名字的来源,叫做:「悟空聊架构」

本篇也会以 「群聊、单聊、朋友圈」 的方式来讲解计算机世界中消息队列的一些奇闻趣事。

从事软件开发的同学,一定都听过或用过消息队列,比如 RabbitMQ,Kafka。消息队列简单来说就是生产者将很多消息放到一个队列结构中,由其他消费者来消费。想了解更多队列的知识,看下我之前写的 18 个 Queue 的文章,保证整的明明白白。传送门:45张图庖丁解牛18种Queue

那如果把常见的四大消息队列拉到一个群里,会碰出哪些火花呢?

被嫌弃

四大队列被中间件大队长拉到了一个群里面。

群名:悟空聊架构群。

成员数:25 个。

管理员:中间件大队长。

群主:神秘悟空哥。

大家来感受下他们的聊天界面吧~

👇👇👇

群聊画面 1

RabbitMQ 单独找中间件大队长聊天的画面。

单聊画面 1

涉及的故事:

  • Erlang 是啥?
    • 并非一门新语言,出现于 1987 年。并不是面向对象语言。
    • 函数式编程,基于进程并发,高并发、分布式是它的优势。
    • 由爱立信制造商专门为通信应用设计,在国内主要是游戏领域用到。
  • Erlang 为啥会被其他队列嫌弃?
    • 因为 RocketMQ、ActiveMQ 都是用 Java 实现的,Kafka 是用 Scale 和 Java 实现的,这三种消息队列从语言实现上都有些类似。
    • 在国内现如今超流行的 Java 的技术生态中,懂 Java 又懂 Erlang 的就比较少了,愿意花时间和精力在 Erlang 上面的就更少了。

快和慢

群聊画面 2

涉及的故事:

  • 他们讨论的低延迟是啥?
    • 就是说这个消息队列的响应速度是非常快的,比如插入一条消息,可以很快的返回插入结果。可以理解为反射弧比较短。而RabbitMQ 的低延迟达到微秒级,而另外三个队列都是毫秒级。
  • 他们讨论的吞吐量是啥?
    • 吞吐量:系统在单位时间内处理请求的数量。
    • RocketMQ 自称火箭,肯定是有他的道理的,因为他的处理请求的速度快呀!吞吐量可以达到 10 万级,而另外两个队列都是万级。

无界面 vs 社区别凉

群聊画面 3

他们聊的操作界面又是啥?

  • RabbitMQ、ActiveMQ、Kafka 都是有界面来操作队列或消息的,而 RocketMQ 就比较坑了, 只提供了命令行工具,这对于长期使用 windows 的用户确实很难受呀。

他们说的阿里出品又是啥?

  • RocketMQ 由大厂阿里出品,已捐给 Apache 开源社区,活跃度不算高,会不会没人修 bug 了?
  • RabbitMQ 有活跃的开源社区,总能找到修 bug 的,你愿意用哪个?大厂推荐用 RocketMQ,可以自己折腾,小一点的还是用 RabbitMQ 吧,节省解决问题的成本。

mysql 的朋友圈

群聊画面 4

点开图片后查看大图,mysql 不会飞 的朋友圈如下:

mysql 的朋友圈

中间件大队长 邀请 mysql 不会飞进入了群聊。

mysql 不会飞进入了群聊

涉及的故事:

消息队列常用在解耦、削峰、异步场景中。先对这几个点来个大白话扫盲:

  • 悟空大白话削峰:关键词:「别都丢给我!」  比如双十一期间超多用户下单,假如 10万个请求都到数据库了,数据库一下子是扛不住这么多请求的,那么消息队列来解围,把请求丢到消息队列,订单服务从消息队列拿消息处理订单请求,起到了一个缓冲的作用,这样对数据库的压力就小多了。
  • 悟空大白话解耦:关键词:「谁用谁拿」 。A 系统需要将数据传给 B、C、D、E 系统,A 系统时刻需要考虑 B、C、D、E 四个系统如果宕机了怎么办?要不要重发,要不要消息持久化存起来?A 系统要考虑的问题太多了,可把 A 系统累坏了。这就是一种高耦合的现象,BCDE 四个系统强依赖 A 系统。那怎么解耦?A 系统将数据丢到消息队列,BCDE 系统自己想要数据的时候就去消息队列里面拿。
  • 悟空大白话异步:关键词:「先去忙你的吧~」  。比如下一笔订单,从订单支付到订单成功,这个闭环可能很长,比如要发送订单成功消息、赠送优惠券等等操作,用户等待的时间可能很久,用户体验就不好了,那怎么解决呢?可以将下单成功的消息丢到队列里面,快速返回订单成功,然后告知用户,消息触达系统再从队列里面拿到订单数据,依次给用户发送订单消息和优惠券就行了,这个就是异步。

消息队列的尴尬

消息队列的尴尬

四大消息队列都默默地去看这篇文章去了,听说这篇文章被大佬们转载了 19 次。传送门:这三年被分布式坑惨了,曝光十大坑

图书推荐

▊《架构师修炼之道:思维、方法与实践》

张云鹏 著

  • 互联网服务集群架构的方法论
  • 来源于作者亲身的工作实践 量化分析技术细节

在本书中,作者总结出一套架构学习的体系,从技术方法、思维意识、工具等方面讲解做好互联网后端架构设计的相关知识。通过相关知识的学习,读者能够掌握设计稳定、易维护、易扩展的软件架构的方法,也能够提升日常维护已有项目的能力。书中讲解的技术方法具有通用性,在其他非互联网行业的软件开发中,也具有借鉴意义。

(扫码了解本书详情)

代码语言:javascript
复制
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连

 热文推荐  
秒懂商用区块链关键技术:智能合约
演说泰斗加尔·雷纳德亲自解读《演说之禅》的奥秘
博文视点架构师成长书单,5本书助你少走弯路
前端中台化,把格局做大:Node.js与测试服务探索

点击阅读原文,了解本书详情~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 被嫌弃
  • 快和慢
  • 无界面 vs 社区别凉
  • mysql 的朋友圈
  • 消息队列的尴尬
相关产品与服务
消息队列
腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档