关于阿里云:行业实践RocketMQ-业务集成典型行业应用和实践

42次阅读

共计 2372 个字符,预计需要花费 6 分钟才能阅读完成。

作者:洛浩

音讯典型利用场景

阿里云领有丰盛的音讯产品家族,除了 RocketMQ 以外,还有大家熟知的对标开源的云 Kafka、反对 AMQP 协定的开源音讯队列 RabbitMQ、物联网通信网关 MQTT、对标 AWS SQS/SNS 的 Serverless 版音讯 MNS(当初也是轻量版 RocketMQ)以及云上事件总线、事件核心 EeventBridge。

阿里云所有音讯产品均采纳 RocketMQ 作为底层存储引擎,为用户提供稳固、牢靠、高性能的音讯通信能力,比方百万 TPS、百万队列、毫秒级通信提早、分级存储、Serverless 弹性等泛滥的音讯产品。也带来了丰盛的利用场景,分为利用集成和数据集成两大类。

利用集成以 RocketMQ 为主,利用最为宽泛,本文也将分享 RocketMQ 在微服务解耦、电商交易、金融领取等场景下的最佳实际,比方银行的交易流水、保单的领取流转等。RabbitMQ、MQTT 也次要用于利用集成场景,比方物联网、IoT 双向通信、云产品的事件告诉以及后处理等。对于新建的业务场景,个别首推 RocketMQ 作为音讯选型,因为 RocketMQ 领有最丰盛的性能个性;而对于存量的业务迁徙,则能够依据具体应用的音讯产品来进行抉择,以升高迁徙老本。

数据集成以云 Kafka 为主,在大数据分析、日志采集剖析等场景下利用最为宽泛,比方游戏的玩家操作、广告埋点、数据分析、利用数据监控等。各种 SaaS 类的集成、聚石塔、电商数据买通等场景,则次要应用 EventBridge。更多的产品选型比照,能够参考专题页中的音讯队列产品选型。

https://www.aliyun.com/produc…

业务音讯应用场景

RocketMQ 通过阿里团体外部十年锻炼,通过双 11 大促等万亿级规模的实时场景验证,SLA 最高可反对 4 个 9,数据可靠性反对 9 个 9。

以微服务解耦、订单交易、金融领取等场景为例,在互联网、电商、批发、金融等行业,音讯的使用量十分大。尤其是在秒杀大促时,为了保障系统的稳固运行,须要 RocketMQ 进行削峰填谷。另外金融客户对每笔交易、每个订单也都要求数据不能失落。因而在此类场景广泛对音讯的牢靠传输、海量并发、低提早、稳定性与容灾等有着十分高的要求。RocketMQ 提供了丰盛的音讯类型,比方事务音讯、定时音讯、程序音讯等。

在交易系统里,为了简化交易流程,个别应用事务音讯和定时音讯。同时 RocketMQ 也提供了音讯轨迹查问、音讯 dashboard,能够十分不便地对每个音讯进行回溯,对每个 topic 或者 group 进行监测。RocketMQ 5.0 也提供了丰盛的实例规格,从百级别 QPS 到百万级 QPS,能够笼罩大部分利用场景。RocketMQ 默认提供多正本、多可用区部署,也提供了跨地区音讯路由能力,反对客户构建高可用容灾或多活,且 RocketMQ 可能反对 99.9% 的音讯 RT 在 10ms 传输。

RocketMQ 事务音讯举例

实现订单状态机异步流转

以订单状态机异步流转为例。此前,如果收到一笔订单交易,须要一一告诉上游的服务模块,比方须要更新购物车、更新积分等。每个业务模块耦合在一起会导致大促时的流量峰值十分大,须要每个服务模块保障其解决性能。而基于 RocketMQ 的事务音讯能力,即可轻松实现订单子流程零碎的异步解耦和流量的削峰填谷,事务音讯能够确保数据库订单状态长久化和上游告诉的事务性。

收到 LBL 订单交易时,能够先向 RocketMQ 发送一条半事务音讯,此时 RocketMQ 会 hold 住音讯,等外围交易事务实现后再向 MQ 提交确认半事务音讯的状态,并执行上游服务模块的告诉。假如外围交易模块失败,则会废除之前提交的半事务音讯,不告诉上游。

比照此前的传统事务模块,应用 RocketMQ 能够大幅简化交易链路,缩短下单耗时。尤其是在大促场景下,能够解耦上游的服务模块,提供削峰填谷的能力。

超时核心

RocketMQ 的定时音讯场景也是常见的应用形式。

比方双 11 等大促场景存在大量预售订单、定点尾款等,会带来大量定时工作。在电商交易过程中,订单流转也存在多个超时状态的工作,解决超时状态的工作须要确保牢靠及时。以传统的计划进行构建散布式调度机制实现的时候,比方基于定时器调度提早大, 可能会存在性能瓶颈。

而采纳 RocketMQ 的定时音讯,实现将变得非常简单。定时工作只需提交一条提早音讯到 RocketMQ,由 RocketMQ 保障定时音讯达到秒级的精度,最高可反对百万级别的 TPS 能力,同时也能反对音讯的生产重试,保障工作牢靠触发,相比传统的应用形式大大简化了定时的复杂度。

RocketMQ 灰度策略举例

微服务全链路灰度

微服务场景下,精准地管制灰度流量并进行灰度版本验证,是保障线上业务稳固运行的要害。大部分状况下,用户通过划分不同的环境来进行灰度公布,对应 RocketMQ 的不同实例。然而很多用户心愿可能简化环境治理,尽可能复用线上资源,联合音讯来提供微服务全链路灰度能力。如上图所示,线上曾经在运行的微服务模块游 A、B、C,C 模块会产生音讯,并由 A 模块进行生产。此时对服务模块 A 和 C 做灰度公布,则线上会存在两条泳道,一条是失常的业务流量,一条是灰度链路。咱们心愿线上版本 C 模块生产的音讯可能被线上版本 A 模块进行生产,灰度版本 C 模块生产的音讯可能被灰度版本 A 模块进行生产。RocketMQ 反对透传环境标签,可在生产端给音讯属性增加标签,而后开启 RocketMQ 的 SQL 92 语法过滤,服务端即可实现音讯的过滤和路由,从而升高客户端的压力。本文讲述了 RocketMQ 的业务音讯场景、一些性能个性的应用办法,包含事务音讯、定时音讯、音讯全链路灰度等,欢送大家尝试应用,如果您对 RocktMQ 的业务音讯感兴趣,也欢迎您扫描下方二维码退出钉钉群一起沟通交流~

点击此处,进入官网理解更多详情~

正文完
 0