开发者学堂课程【消息队列 MNS (RocketMQ 轻量版)入门课程:MNS 的最佳实践及案例】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1236/detail/18410
Mns 的最佳实践及案例
前俩节课对mns整体的特点和功能,进行了具体的介绍,那么在生产实践过程中mns是如何使用的呢,今天课程的主要内容就是帮助了解mns高级特性的最佳实践,一些实际的使用案例。首先我们来看一下最佳实践,虽然mns是以轻量的模型为核心,但是它在具体的使用过程中就可以实现部分的高级功能,跟大家做一个简要的介绍。
首先是超大消息的传输,消息服务的队列消息大小最大限制是64k,这个限制基本能够满足在正常情况下,消息作为控制流信息交换通道的需求,但是在某些特殊场景下,消息数据比较大,就只能采用消息切片片的方式来进行,而mns则可以使用oss来实现传递64 kb的消息。具体做法有如下四个部分:
第一,生产者在向消息服务发送消息前,如果发现消息体的大小大于64 kb,则需要将消息体的数据上传到oss,生产者把数据对应的object信息发送到消息mns中消费者从消息服务mns队列里读取消息,然后判断消息内容是否为oss的object信息,完成了以上三个步骤之后,最后呢判断消息内容是oss的object信息后,从oss中下载对应的内容,并作为消息体来返回到上层应用中,这是第一个最大事件,实现超大消息的传输。
第二种是mns可以实现事物的消息,事务消息想必大家都有所了解,简单来说就是在一些业务的场景中需要保障本地操作和消费发送的事务一致性及消费发送成功,企业本地操作也成功。如果消费方式失败而本地失败了,那么发送成功的消息则需要回滚。具体实现的流程,大家可以参考一下文稿里的流程图。
最后是过滤消息,一些场景中需要根据消息内容把消息推送到不同的推送目标中去,为了达到这一功能,您可以创建多个主题,并为每个主题设置相应的推送目标,但这样会增加额外的成本,并且增加了相关的运维复杂度,为了避免这种情况,消息服务的提供了消息过滤标签功能。可以只创建一个主题,并在创建订阅时设置不同的消息过滤标签,结合消息的消息过滤标签mns,就可以把消息推送到不同的推送目标中,具体流程同样也可以在广告中看到,在了解完mns部分高级功能最佳实践之后,下面来跟大家具体的介绍一下mns在业务中的实际应用场景。
第一个比较常用的场景是交易消息的结尾,作为电商交易最核心的交易系统,每笔交易定额数据的产生会引起几百个下游业务的关注,包括物流,购物车,积分由计算,分析等等,整体业务系统庞大而且复杂,为了保障主战业务的连续性,必须要采用分布式的价格来进行设计,在各个系统间研究基于mns的特点,使用mns,一方面可以实现高可用的生物和架构,通过上下游业务系统的综合设计,即便下游的mns系统如物流,积分等出现不可用,这是宕机的情况,都不会影响到核心教育的正常运转,另一方面呢也可以灵活的适应业务的快速增长。是业务要求,新增业务系统时ms也不会影响基础的,基础框架的改动也不会影响到,同时呢也不会影响到其他系统间的正常运转,这里就是第一个场景交易系统的交易消息的一个结尾,第二个场景常见的就是大流量学风场景,比方说满足业务在特殊时期,比如秒杀,抢红包,企业开门等大型活动时约会带来较高的流量脉冲,防止系统超负荷甚至崩溃或者请求大量失败,是我们来解决影响用户体验的一个核心问题,使用mns可以承接流量脉冲,保证系统不被击垮,在保证可用性的同时呢,快速有效的请求响应可以提高用户的整体体验,同时具备海量消息的堆积能力,可以确保下游的业务在安全水平稳定的运行避免超高流量的冲击,最后是在成本方面,学工填种能力可以控制下游业务的疾病规模,从而降低投程度的投入的成本。
所以第二个部分就是介绍的在大流量旋风填补这个场景下的应用,第三个常见的场景是用户信息的注册场景,在常见的用户信息注册上中,用户注册成功后就需要送注册成功邮件,新新用户积分,优惠券等等,加入mns可以提升主流程用户注册程序的响应速度,同时发送通知等非主流流程或非重要任务,就可以一步的进行集中处理,同时还可以将任务进行聚合后批量处理。
以上就是mns常见的三个场景,如果您还想了解更多的mns实际应用场景,也可以扫描图中二维码进入到官网来了解更多的信息,本节课的内容的核心便是介绍了最佳实践和常见的一些场景,水岸类希望能够帮助大家对mns应用进一步的了解,后面的两堂课将带领大家进入到实操环节,欢迎大家体验,感谢大家!