10 年 MQ 老兵:消息队列如何学、如何选?| 极客时间
系统优化有三宝:异步、缓存、分片。
异步首选消息队列,必须做到知其然,知其所以然。而消息中间件恰好也是集大成者,需要也值得投入大量精力去研究。
早年,业界消息队列演进的主要推动力在于功能、场景、分布式集群的支持等等。近几年,随着云原生架构和 Serverless 的普及,业界 MQ 主要向实时消息和流消息的融合架构、Serverless、Event、协议兼容等方面演进。从而实现计算、存储的弹性,实现集群的 Serverless 化。
作为一个老后端,我理解作为消息队列的使用者、研发人员、运维人员、架构师,大家希望获得什么,解决什么问题。
使用者:希望选出符合我们业务需求、系统架构的最优组件;
研发人员:希望了解消息队列的底层原理、设计思考、实现方案;
运维人员:希望能够判断这款产品是否足够稳定,是否有隐藏的风险等等;
架构师:希望了解到每款消息队列的功能清单、系统架构的优劣势、成本结构等等信息,以此辅助我们做出合理的决策。
但不管什么角色,都会遇到一个关键问题,那就是:消息队列那么多,看起来那么复杂,我们是否做出了最优选择?
而要解决这个问题,我们是不是要把业界那么多的主流消息队列都学一遍?当然不用,学习应有技巧。
从架构设计角度来看,消息队列在演进过程中本就存在相互借鉴,这也给我们学习消息队列提供了一个便捷的路径。即只要我们从需求出发,理解设计原理、主流技术方案、方案之间的优劣、选型过程主要的思考点,那么我们再往下学习具体某一款消息队列就会变得非常简单。
在我看来,掌握的核心关键点是成体系、系统、全面的知识结构。只要掌握了核心、掌握了顶层设计原理,不管有多少消息队列都能轻松驾驭。
以最近消息队列领域最火的 Apache Pulsar 举例。从它的设计思想中,你会看到 Kafka、RocketMQ、RabbitMQ 的影子。从架构的角度,Pulsar Broker 和 Kafka 的设计几乎是一模一样的。所以你只要理解了 Kakfa、RocketMQ、RabbitMQ,再来理解 Pulsar,就是事半功倍的。
今天给大家分享一个清晰的 MQ 学习路径:
这个学习路径来自极客时间刚推出的课程《深入拆解消息队列 47 讲》。专栏作者是 腾讯云 Kafka 技术负责人 许文强。
因为对这方面一直很感兴趣,专栏已上线我就入手了,总的来说,该专栏结合了他的多年实践经验,从原理到方案,少啃艰深源码,极简代码辅助,最终帮助你系统掌握消息队列,在实际产线中运用自如。也推荐给大家:
腾讯云高级开发工程师,腾讯云消息队列 Kafka 技术负责人,Apache Kafka/RocketMQ/Pulsar Contributor。
常年活跃于消息队列和 Serverless 相关开源社区。精通业界主流消息队列,如 Kafka、RabbitMQ、RocketMQ、Pulsar 等等。在消息队列和 Serverless 领域有着深厚的技术储备,并具有丰富的大规模云上 PaaS 产品的商业化、产品设计、运维运营经验。
他不仅对消息队列这个领域有非常深刻的理解,同时也有大量的实战经验。
预习篇:了解主流 MQ 的发展脉络,从中明确未来发展方向,并就后续课程频繁提及的基础概念做一个对齐。
基础篇:围绕通信协议、网络模块、存储模块、生产者、消费者等五个部分,分析一个最基础的消息队列应该考虑什么,如何选型以及如何设计实现。最后还会围绕着这五个部分分析 4 款主流消息队列的设计实现。
进阶篇:在最基础的消息队列之上,从集群瓶颈和可靠性风险分析、如何构建集群、如何确保数据一致性、集群的安全控制、集群的可观测性、编码技巧、集群优化等七个方面,来分析实现一个分布式的消息队列集群应该考虑什么、怎么做,有哪些方案以及各种方案的优劣。最后还是会围绕着这七个方面分析 4 款主流消息队列的设计实现。
功能篇:在集群化的消息队列的基础上,探讨在集群上如何实现顺序消息、幂等消息、延时消息、事务消息、死信队列、优先级队列、消息查询、支持 Schema、支持 WebSocket 等功能。详细分析实现这些功能要考虑什么,如何做方案设计、技术选型,以及怎样实现这些功能。
架构升级篇:前面四个模块已经实现了一个集群化、功能丰富的消息队列。接下来重点探讨在云原生架构演进、降本增效诉求增大、Serverless/Event 概念兴起等背景下,消息队列是如何跟进业界最新设计理念,做架构升级以满足系统弹性和降本诉求的。本模块将从存算分离架构、分层存储、Severless/Event 架构、集群容灾、数据连接、消息中台等六个方面来展开讲解技术上如何实现、如何考虑、能达到什么效果、有哪些风险、能满足哪些场景等等。
经验总结篇:基于他多年观察所产出的分享,从业务视角输出,赋能业务和产品,也为你自身赋能。
通过目录来看看具体内容吧:
消息队列是分布式中间件的集大成者,其中涉及到协议设计、网络通信、数据存储、分布式系统架构等多个方面的技术,掌握好消息队列可以使得技术能力有一个整体的提升。
再提醒一下
今天课程上新特惠,早鸟到手 ¥89
如果你是新用户,仅需¥59
订阅后还可以加入课程交流群:
最后我想说,在互联网降本增效的浪潮下,我希望我们都能做到:尽最大的努力,做最好的自己。
点击「阅读原文」,我们一起开启这段学习之旅!
微信扫码关注该文公众号作者