极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:19
登录|注册

网易云音乐的消息队列改造之路

讲述:丁婵大小:2.44M时长:05:19
网易云音乐自 2013 年上线后,业务保持了高速增长。日前,网易云音乐消息队列负责人林德智在 Apache Flink&RocketMQ Meetup 上海站分享了网易云音乐的消息队列改造实践,以下为重点内容。
网易云音乐从 13 年 4 月上线以来,业务和用户突飞猛进。 后台技术也从传统的 Tomcat 集群到分布式微服务快速演进和迭代,在业务的不断催生下,诞生了云音乐的 RPC,API 网关和链路跟踪等多种服务,消息队列也从 RabbitMQ 集群迁移到 Kafka 集群。对于消息队列,更多处于使用阶段,也在使用中出现很多问题。因此我们期望提供一种完全可控,出现问题我们自己能排查,能跟踪,可以根据业务需求做定制改造的消息队列。
经过 RabbitMQ,Kafka 和 RocketMQ( ActiveMQ 性能较差,暂不考虑)的调研和分析后,我们发现 RocketMQ 比较适合云音乐的通用业务,但是开源 RocketMQ 也有一些缺陷,比如 Broker 仅提供了 Master 到 Slave 的复制,没有 Failover 切换的能力。而且当时事物消息不开源、消息发送消费无追踪、没有告警与监控体系等等,只有我们解决了这些缺陷才能在业务中大规模使用。
我们期望消息队列具备宕机 Failover 能力,根据不同业务场景提供不同 QOS 能力,如商城消息不能丢失、交易事物消息支持、消息发送消费追踪、失败排查等能力。
同时对业务比较关心的发送耗时,消费耗时,消费延迟,消费失败异常等提供监控和告警能力。同时对运维比较关心的整体运行水位和各项指标提供监控大盘,以及排查发现消息队列自身问题与长期运维能力。
另外云音乐少部分业务是 Nodejs 和 Python 的,我们提供 HTTP 协议接入能力。
所以,最终以开源 RocketMQ 为内核,完全继承开源 RocketMQ 具备的特性。为满足高可用,我们增加了 Failover 组件,对 Broker 进行健康检查提供快速切换能力。
对于业务开发关心的监控,我们修改客户端,把耗时,异常等数据采用系统消息方式上报,由 Monitor 组件消费消息并写入 ES,并提供控制台查询能力。同时客户端上报的数据,Alarm 也会消费一份,根据业务配置的监控项检查告警,超出阀值直接发出告警。另外消息系统也会出现宕机,宕机选主也有一段时间(秒级),虽然客户端有重试能力,但是有些场景不能很好满足。因此,消息队列提供了降级组件,在系统异常时,客户端会将消息发送本地或者发送到容灾集群,降低系统宕机时对业务的影响。
在运维方面,我们提供系统巡检能力,将系统比较关键的状态定时巡检,异常则快速发出告警。我们也提供控制台资源管控能力,将 Topic,ProducerGroup,ConsumerGroup,以及上下游应用关联并管控起来。
另外,由于云音乐根据自己业务的需求,对开源 RocketMQ 的改动较多,林德智也介绍了几个特性,如消息轨迹、事务消息、多环境隔离。
消息轨迹和开源不同的是,云音乐消息队列提供发送消费、事物消息回查轨迹,同时消费失败时,也在轨迹中提供失败异常信息,这样就能够追踪失败原因。
云音乐在做事务消息时,开源事务消息还没出来。云音乐通过修改存储引擎实现自己的事物消息。提供事务消息回查按时间收敛能力,回查不到状态超过次数进入死信,同时提供死信告警,事务消息回查死信处理能力。
对于多环境隔离,云音乐有很多条业务线,每条业务线都有很多个需求在做,同时各个业务线之间的访问都是通过服务化的方式进行。为提升开发和测试效率,通过对 RPC 流量打标的方式将流量隔离到相应环境,并一路透传下去。消息也一样,同一个需求发送的消息需要相应的环境开发、测试和其他互不影响。因此云音乐设计实现了消息队列的隔离,加快业务开发测试,预发快速验证能力。
最后,林德智表示,作为开源的受益者,他们会将部分改动提交到 Apache RocketMQ 官方,以供更多人参考。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • Okay
    前面说从rabbit 迁移到kafka,但后面一直说rocket定制,好像没啥关联
    2
  • 渔村蓝
    消息队列怎么隔离的
  • 悟空WuKong
收起评论
显示
设置
留言
3
收藏
65
沉浸
阅读
分享
手机端
快捷键
回顶部