消息队列和应用工具产品体系-阿里云消息队列产品简介

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
可观测链路 OpenTelemetry 版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 消息队列和应用工具产品体系-阿里云消息队列产品简介

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:消息队列和应用工具产品体系-阿里云消息队列产品简介

课程地址:https://edu.aliyun.com/course/3112075/lesson/19035


消息队列和应用工具产品体系-阿里云消息队列产品简介


内容介绍:

一.阿里云消息队列MQ家族

二.自研、商用、开源“三位一体”的RocektMQ

三.完美支持历年的双11海量流量

四.自研、商用、开源“三位一体”的RocektMQ

五.实现分布式业务的最终一致性

六.实时计算和分布缓存

 

一.阿里云消息队列 MQ 家族

上面小节简单介绍了消息队列的基本概念,这一小节来学习阿里云的消息队列产品体系,下图是阿里巴巴现有的消息队列 MQ 家族的主要成员,包括六种产品。
image.png其中消息队列的RocketMQ 主要用于互联网业务场景,是阿里巴巴自主研发并开源的消息队列,也是接下来的课程重点。消息队列 Kalfka 主要用于大数据生态环境,是最早开源的消息队列产品之一,在大数据领域具有非常完善的生态环境。

微消息队列 MQTT 主要应用于移动互联网和物联网场景,它结合了消息队列的 RocketMQ 和轻量级的消息通信协议MQTT,相较于RocketMQ,具有支持终端数量多,网络通信开销小等特点。
消息队列 RabbitMQ也是一款开源的消息类产品,它的最大特点是使用特殊进行开发,单服务器并发性能非常好,同时拥有自己的 AMQP 协议。而阿里云的RabbitMQ 产品,100%兼容AMQP 协议,是历史系统移植上云非常好的选择。
消息服务MNS是一套专门为云上系统开发HTTP接入协议的消息队列,其基本功能和消息队列RocketMQ类似,事件总线 EventBridge 是一款 Serverless 的事件总线系统,支持阿里云服务,自定义应用,应用以标准化、中心化方式接入,并能够以标准化系列运用,在应用之间传递路由世界。

 

二.自研、商用、开源“三位一体”的 RocektMQ

阿里云MQ家族中最重要的产品,消息队列RocketMQ 版,阿里内部使用消息队列系统最早可以追溯到2007年,在淘宝架构进行分布式架构调整的五彩石项目,当时阿里巴巴集团的中间件技术部门自主研发了消息队列Notify产品。
2010年左右,阿里巴巴的业务快速发展,急需一款支持顺序消息和海量消息堆积的消息队列中间件产品,因此又诞生了MetaQ1.0。经过多年的内部使用,MetaQ 升级到了3.0,稳定性和可用性都达到了一般商用软件的技术标准。于是在2012年,阿里巴巴正式将这款产品进行开源,并更名为RocketMQ,成为了继 Kalfka、阿帕奇MQ之后另一个高质量商用级的开源消息队列产品,引起了业界的广泛关注。
在2015年,在开源版本Rocket MQ的基础上,阿里云推出云上的商业版本消息 AliwareMQ,从而实现了自研、商用、开源的三个一体软件产品研发生态。在这种三位一体的生态环境下,阿里巴巴内部的技术沉淀既可以通过开源社区提供给广大开发者,也可以通过云平台提供给大量的企业级应用程序进行验证,反过来,开源社区针对开源版本开发了丰富的第三方组件支持,以及云平台上更为广阔的技术场景验证,又为阿里巴巴内部使用提供了新的设计思路和参考数据。这样,这种自研、商用、开源的生态环境实现了三方共赢和利益最大化。

image.png

 

三.完美支持历年的双11海量流量

双11秒杀、抢红包、企业开门红等大型活动时,会带来较高的流量脉冲,如果没有相应的保护措施,会导致系统超负荷运动甚至崩溃,而如果限制太多,则会导致请求大量失败从而影响用户体验。RocketMQ 是阿里巴巴双11的官方指定消息产品,用来支撑阿里巴巴集团所有的消息服务,从诞生以来,经历十余年的高可用与高可靠的严苛挑战,是阿里巴巴交易链路的核心产品。
RocketMQ 的服务可用性可以高达99.95%,同时使用多地域、多可用区、分布式的极端化方式部署,可以确保消息队列服务的高可用,能够做到即使整个机房不可用,仍然可提供正常的消息服务。同时,RocketMQ 的数据可靠性达到了十个九,数据持久化,采用了同步双写,数据冗余快速切换技术,确保了数据的可靠性。

image.png

在历年双11购物狂欢节中,零点的峰值流量可以达到千万级 TPS 总数据量可以达到万亿级数据洪峰,创造了全球最大的业务消息并发及业务流转记录。Rocket MQ 在保证高性能的前提下,支持了亿级消息堆积而不影响集群的正常工作。

在流量需峰迭谷及微服务解耦的场景下,也提供了强大的支持。2020年双11交易峰值达到了每秒58.3万,消息中间件的 RocketMQ 继完美制撑的整个集团的大促及业务场景的平稳。

 

四.异步解耦各业务中心

image.png


淘宝的营架构极其复杂,成百上千的业务模块之间互相关联,如果业务与业务之间完全采用同步调用模式,则各模块之间的耦合度和关联度会非常高,一旦某个模块出现问题,会导致整个调用链路出现问题。以交易系统为例,交易系统作为淘宝和天猫主站最核心的系统,每笔交易订单数据的产生均会引起包括物流、购物车、积分、支付、直充、SNS、旅游集团分析等等几百个下游业务系统的关注,整个业务系统庞大而复杂,如果采用同步调用方式,不但架构负担重,可靠性难以保证,而且整体的执行流程也会非常的缓慢。
通过Rocket MQ 将各关联的业务模块改为异步订阅发布模式,避免了各业务模块之间的过分关联和耦合,实现了业务模块之间异步通信和应用解耦。交易系统产生订单之后,只需要向消息队列发送订单产生消息即可返回,而后端的多个子应用系统则会在合适的时机、以异步方式消费订单消息。
这样,既可以保证主业务的连贯性,同时也可以避免因子业务执行时间过长或失败导致的主业务卡顿或无法正常执行。另外,这种设计模式对业务扩展性也非常良好,当有新的业务流程需要添加或修改时,不需要对其他的功能模块进行调整,只需要修改消息队列即可实现功能的替换或扩展。

 

五.实现分布式业务的最终一致性

业务之间关联并不是很紧密的系统,可以通过消息队列来实现解耦合和异步调用。而在需要保证数据一致性的某些场合,如交易、支付、红包等系统中,消息队列也有合适的用法,在介绍消息队列在一致性场合应用前,先来了解下强一致性和最终一致性。

image.png

强一致性:指当更新操作完成后,所有数据立刻更新,任何一次读操作,都能读到该数据最近一次的写入值,系统中所有的进程,看到的操作顺序,都和全局时钟下的顺序一致,即在任意时刻,所有节点中的数据相同。任何后续进程的访问,都会返回最新的更新值,这是对用户最友好的状态,即用户上次写入的数据,下次保证读入该数据,但在分布式系统中有一个著名的CAP,即任何一种分布式的一致性算法都无法做到在一致性、分区容错性和可用性之间全部满足,最多只能满足两个属性,而分区容错性是分布式系统的根本,因此只能在一致性和可用性之间进行选择。
对企业级互联网应用来说,可用性是最重要的技术指标,因此在企业级互联网应用中,通常采用的是支持可用性和分区容错性,也就是支持CAP原则中的AP原则,而放弃强一致性,转而采用最终一致性来代替强一致性。

最终一致性又称贝斯理论,即所有的数据副本在经过一段时间的同步之后,最终都一定达到一致的状态。最终一致性的本质:需要系统保证最终的数据能够达到一致,而不需要实时保证系统数据的强一致性。交易、支付、红包等产品实际上都需要保证数据的最终一致性。在引入消息队列RocketMQ之后,使用消息队列Rocket MQ的分布式事务通过消息可持久化,即使某些调用暂时失败,但由于消息已经被持久化,所以在若干次重试之后依然可以保证一致性。这样既可以实现系统之间的启用,又可以保证分布式事物的最终一致性。

 

六.实时计算和分布缓存

消息队列同样可以应用大数据场景、实时计算场景和分布式缓存系统。在典型的大数据场景中,系统需要从成百上千的数据源中实时收取大量数据,然后再将数据进行处理后存储或直接推入实时计算框架进行实时计算,这就需要数据收集组件具有强大的数据吞吐能力,同时当后端的数据计算出现延迟时,要求数据收集组件具有强大的消息堆积能力,而消息队列组件的技术特点正好能满足这两种需求。因此,在大数据应用场景下,开发者通常会使用消息队列来收集和汇总实时数据,然后再将汇总后的数据推送到大数据处理框架或实时计算框架中。

image.png


在大数据处理中,Kalfka 和 RocketMQ 都是常用的消息队列,而 Kalfka 和 Rocket MQ 的技术对比,在后面会进行学习。
另外,消息队列还可应用于分布式缓存系统。在大型互联网应用中,为避免数据库的独操作造成性能瓶颈,通常会采用缓存形式,将常用的热点数据提前加载到缓存中,以避免集中读取造成的性能损失。而在超大型系统中,集中式的缓存同样会造成系统单点的出现和缓存读取的性能瓶颈,这种情况下,超大型系统一般会采用分布式缓存的模式。将数据实时复制到多个分布式系统,应用能就近读取缓存,以提高并发性。
在分布式缓存的设计过程中,如何保证缓存数据的一致性是整个系统最大的技术难点,而消息队列的数据高可靠性和数据严格排队的技术特点是分布式缓存数据同步设计中理想的中间件产品选择。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
22天前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
58 2
|
5月前
|
消息中间件 测试技术 RocketMQ
消息队列 MQ产品使用合集之在异步发送消息函数sendMessage()中出现了错误,错误代码为-3,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 监控 Oracle
消息队列 MQ产品使用合集之启动Namesrv节点时,遇到报错,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
69 9
|
5月前
|
消息中间件 存储 Java
Java中的消息队列应用与性能优化
Java中的消息队列应用与性能优化
|
5月前
|
消息中间件 网络协议 JavaScript
消息队列 MQ产品使用合集之报错提示是"the internal error!",是什么原因导致的”
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 监控 Java
在Java应用中实现微服务间的消息队列通信
在Java应用中实现微服务间的消息队列通信
|
4月前
|
消息中间件 存储 Java
Java中的消息队列应用与性能优化
Java中的消息队列应用与性能优化
|
5月前
|
消息中间件 Java API
消息队列 MQ产品使用合集之遇到"No topic route info in name server for the topic"错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。