消息队列 RocketMQ 事务消息全新升级-解决分布式事务一致性的最佳实践 消息队列(Message Queue,简称 MQ)是构建分布式互联网应用的基础设施,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案。MQ 产品生态丰富,多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖金融保险、(新)零售、物联网、移动互联网、传媒泛娱乐、教育、物流、能源、交通等行业。 微服务架构下,您是否常面临如下挑战? 1 通讯机制更为复杂 单体应用改造为分布式系统后,应用间的通讯机制及故障处理变得复杂。 2 系统应用之间依赖强 各个业务模组之间通过串联消息通讯,彼此之间相互影响且依赖性强,可用性差。 3 数据一致性难以保障 微服务化后,简单功能需要调用多个服务并操作多个数据库实现,数据一致性难以保障。 MQ事务消息,帮助实现类似 X/Open XA 的分布事务功能,达到分布式事务的最终一致。 什么是事务消息? 通过消息的异步事务,可以保证本地事务和消息发送同时执行成功或失败,既能实现系统之间的解耦,又能保证数据的最终一致性,广泛应用于电商交易系统、支付红包等场景。 ![]() 特性功能
消息队列 RocketMQ 版的适用场景 为您介绍消息队列 RocketMQ 版的适用场景,以便您更好地判断如何在业务中使用消息队列 RocketMQ 版。 例如,针对一家互联网电商企业,其业务涉及广泛,如注册、订单、库存、物流等;同时,也会涉及许多业务峰值时刻,如秒杀活动、周年庆、定期特惠等。这些活动都对分布性系统中的各项微服务应用的处理性能带来很大的挑战。 消息队列 RocketMQ 版作为分布式系统中的重要组件,可用于应对这些挑战,例如解决应用的异步解耦。 下文先以用户注册为场景说明消息队列 RocketMQ 版如何实现以下功能:
最后,再以电商的秒杀场景和价格同步场景分别说明消息队列 RocketMQ 版所实现的削峰填谷和大规模机器的缓存同步。 异步解耦传统处理 最常见的一个场景是用户注册后,需要发送注册邮件和短信通知,以告知用户注册成功。传统的做法有以下两种:
以下就注册场景中使用了消息队列 RocketMQ 版的效果进行说明。 异步解耦 对于用户来说,注册功能实际只需要注册系统存储用户的账户信息后,该用户便可以登录,后续的注册短信和邮件不是即时需要关注的步骤。 对于注册系统而言,发送注册成功的短信和邮件通知并不一定要绑定在一起同步完成,所以实际当数据写入注册系统后,注册系统就可以把其他的操作放入对应的消息队列 RocketMQ 版中然后马上返回用户结果,由消息队列 RocketMQ 版异步地进行这些操作。 ![]() 数据流动如下所述:
用户只需在注册页面等待注册数据写入注册系统和消息队列 RocketMQ 版的时间,即等待 55 ms 即可登录。 异步解耦是消息队列 RocketMQ 版的主要特点,主要目的是减少请求响应时间和解耦。主要的适用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时,由于使用了消息队列 RocketMQ 版,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。 分布式事务的数据一致性注册系统注册的流程中,用户入口在网页注册系统,通知系统在邮件系统,两个系统之间的数据需要保持最终一致。 普通消息处理 如上所述,注册系统和邮件通知系统之间通过消息队列进行异步处理。注册系统将注册信息写入注册系统之后,发送一条注册成功的消息到消息队列 RocketMQ 版,邮件通知系统订阅消息队列 RocketMQ 版的注册消息,做相应的业务处理,发送注册成功或者失败的邮件。 ![]() 流程说明如下:
在这样的情况下,虽然实现了系统间的解藕,上游系统不需要关心下游系统的业务处理结果;但是数据一致性不好处理,如何保证邮件通知系统状态与注册系统状态的最终一致。 事务消息处理 流程说明如下:
分布式事务消息的更多详细内容请参见事务消息。 消息的顺序收发消息队列 RocketMQ 版顺序消息分为两种情况:
顺序消息的详细内容请参见顺序消息。 削峰填谷流量削峰也是消息队列 RocketMQ 版的常用场景,一般在秒杀或团队抢购活动中使用广泛。 在秒杀或团队抢购活动中,由于用户请求量较大,导致流量暴增,秒杀的应用在处理如此大量的访问流量后,下游的通知系统无法承载海量的调用量,甚至会导致系统崩溃等问题而发生漏通知的情况。为解决这些问题,可在应用和下游通知系统之间加入消息队列 RocketMQ 版。 ![]() 秒杀处理流程如下所述:
大规模机器的缓存同步双十一大促时,各个分会场会有玲琅满目的商品,每件商品的价格都会实时变化。使用缓存技术也无法满足对商品价格的访问需求,缓存服务器网卡满载。访问较多次商品价格查询影响会场页面的打开速度。 此时需要提供一种广播机制,一条消息本来只可以被集群的一台机器消费,如果使用消息队列 RocketMQ 版的广播消费模式,那么这条消息会被所有节点消费一次,相当于把价格信息同步到需要的每台机器上,取代缓存的作用。 广播消费的详细内容请参见集群消费和广播消费。 |
香港服务器多少钱一个月?哪家的香港服务器
4核4g6M50G盘20G防御云服务器价格多少钱?T
特发集团与华为签署全面合作协议
【身边的AI】高空抛物智能追溯解决方案,站
中海&华为签署战略深化合作协议
华为赵博:数字化转型成为地产企业最确定的