消息队列的技术选型

23 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
1. 开发工程师 2. 消息队列进阶者
你将会学到
消息队列的进阶课,掌握消费模型、使用MQ使用分布式事务、确保消息的可靠消费、幂等设计等能力
课程简介

架构驿站,让更多人可以因为学习和分享而受益。

大师兄,2012年入行,毕业于北京交通大学计算机科学与技术专业,曾服役于广联达、三快在线、拉勾网,技术专家。

课程大纲:

消息队列进阶课.png

课程内容节选

消息积压问题分析

image.pngimage-20230810221835097

如果出现积压,那一定是性能问题,想要解决消息从生产到消费上的性能问题,就首先要知道哪些环节可能出现消息积压,然后在考虑如何解决。

  • 跟消息生产者没有关系

  • 跟消息队列本身没有关系

  • 消息消费者的消费能力不足引起的

解决方案

  • 如果是突发问题,临时扩容,增加消费者的数量。通过扩容和降级承担流量,应急问题的处理。

  • 其次,才是排查解决异常问题。监控、日志分析是否消费端的业务逻辑代码出现了问题,优化消费端的业务处理逻辑。

  • 最后,如果消费端处理不足,水平扩容提升消费端并发处理能力。在扩容消费者实例的同时,必须要同步扩容Topic分区的数量,确保消费者的实例数和分区数是相同的,分区是单线程消费。

在设计系统的时候,一定要保障消费端的消费的性能要高于生产端生产的性能。


解决方案

  • 如果是突发问题,临时扩容,增加消费者的数量。通过扩容和降级承担流量,应急问题的处理。

  • 其次,才是排查解决异常问题。监控、日志分析是否消费端的业务逻辑代码出现了问题,优化消费端的业务处理逻辑。

  • 最后,如果消费端处理不足,水平扩容提升消费端并发处理能力。在扩容消费者实例的同时,必须要同步扩容Topic分区的数量,确保消费者的实例数和分区数是相同的,分区是单线程消费。

在设计系统的时候,一定要保障消费端的消费的性能要高于生产端生产的性能。


处理经验

还有一种消息积压的情况是,日常系统正常运转的时候,没有积压或者只有少量积压很快就消费掉了,但是某一个时刻,突然就开始积压消息并且积压持续上涨。这种情况下需要你在短时间内找到消息积压的原因,迅速解决问题才不至于影响业务。

如何排查消息积压的原因?

如果赶上大促场景,扩容消费实例,如果服务器资源不足,系统降级:关闭一些不重要的业务,减少发送方的数据量,较低限度的去运行。

展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交