MNS 的最佳实践及案例|学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 MNS 的最佳实践及案例

开发者学堂课程消息队列 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队列里读取消息,然后判断消息内容是否为ossobject信息,完成了以上三个步骤之后,最后呢判断消息内容是oss的object信息后,从oss中下载对应的内容,并作为消息体来返回到上层应用中,这是第一个最大事件,实现超大消息的传输。

第二种是mns可以实现事物的消息,事务消息想必大家都有所了解,简单来说就是在一些业务的场景中需要保障本地操作和消费发送的事务一致性及消费发送成功,企业本地操作也成功。如果消费方式失败而本地失败了,那么发送成功的消息则需要回滚。具体实现的流程,大家可以参考一下文稿里的流程图。

最后是过滤消息,一些场景中需要根据消息内容把消息推送到不同的推送目标中去,为了达到这一功能,您可以创建多个主题,并为每个主题设置相应的推送目标,但这样会增加额外的成本,并且增加了相关的运维复杂度,为了避免这种情况,消息服务的提供了消息过滤标签功能。可以只创建一个主题,并在创建订阅时设置不同的消息过滤标签,结合消息的消息过滤标签mns,就可以把消息推送到不同的推送目标中,具体流程同样也可以在广告中看到,在了解完mns部分高级功能最佳实践之后,下面来跟大家具体的介绍一下mns在业务中的实际应用场景。

第一个比较常用的场景是交易消息的结尾,作为电商交易最核心的交易系统,每笔交易定额数据的产生会引起几百个下游业务的关注,包括物流,购物车,积分由计算,分析等等,整体业务系统庞大而且复杂,为了保障主战业务的连续性,必须要采用分布式的价格来进行设计,在各个系统间研究基于mns的特点,使用mns,一方面可以实现高可用的生物和架构,通过上下游业务系统的综合设计,即便下游的mns系统如物流,积分等出现不可用,这是宕机的情况,都不会影响到核心教育的正常运转,另一方面呢也可以灵活的适应业务的快速增长。是业务要求,新增业务系统时ms也不会影响基础的,基础框架的改动也不会影响到,同时呢也不会影响到其他系统间的正常运转,这里就是第一个场景交易系统的交易消息的一个结尾,第二个场景常见的就是大流量学风场景,比方说满足业务在特殊时期,比如秒杀,抢红包,企业开门等大型活动时约会带来较高的流量脉冲,防止系统超负荷甚至崩溃或者请求大量失败,是我们来解决影响用户体验的一个核心问题,使用mns可以承接流量脉冲,保证系统不被击垮,在保证可用性的同时呢,快速有效的请求响应可以提高用户的整体体验,同时具备海量消息的堆积能力,可以确保下游的业务在安全水平稳定的运行避免超高流量的冲击,最后是在成本方面,学工填种能力可以控制下游业务的疾病规模,从而降低投程度的投入的成本。

所以第二个部分就是介绍的在大流量旋风填补这个场景下的应用,第三个常见的场景是用户信息的注册场景,在常见的用户信息注册上中,用户注册成功后就需要送注册成功邮件,新新用户积分,优惠券等等,加入mns可以提升主流程用户注册程序的响应速度,同时发送通知等非主流流程或非重要任务,就可以一步的进行集中处理,同时还可以将任务进行聚合后批量处理。

以上就是mns常见的三个场景,如果您还想了解更多的mns实际应用场景,也可以扫描图中二维码进入到官网来了解更多的信息,本节课的内容的核心便是介绍了最佳实践和常见的一些场景,水岸类希望能够帮助大家对mns应用进一步的了解,后面的两堂课将带领大家进入到实操环节,欢迎大家体验,感谢大家!

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88624 13
|
7月前
|
Java API 网络架构
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
1134 0
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
|
6月前
|
消息中间件 数据可视化 Go
Rabbitmq 搭建使用案例 [附源码]
Rabbitmq 搭建使用案例 [附源码]
49 0
|
4月前
|
消息中间件 Arthas Java
RocketMQ—一次连接namesvr失败的案例分析
项目组在使用RocketMQ时遇到Consumer连接Name Server失败的问题,异常显示连接特定地址失败。通过Arthas工具逐步分析代码执行路径,定位到创建Channel返回空值导致异常。进一步跟踪发现,问题源于Netty组件在初始化`ByteBufAllocator`时出现错误。分析依赖后确认存在Netty版本冲突。解决方法为排除冲突的Netty包,仅保留兼容版本。
280 0
RocketMQ—一次连接namesvr失败的案例分析
|
6月前
|
数据采集 监控 物联网
MQTT协议在智能制造中的应用案例与效益分析
【6月更文挑战第8天】MQTT协议在智能制造中的应用案例与效益分析
174 1
|
消息中间件 Java Maven
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
74 1
|
消息中间件 Java Maven
消息中间件系列教程(11) -RabbitMQ -案例代码(通配符模式)
消息中间件系列教程(11) -RabbitMQ -案例代码(通配符模式)
90 0
|
消息中间件 Java Maven
消息中间件系列教程(10) -RabbitMQ -案例代码(路由模式)
消息中间件系列教程(10) -RabbitMQ -案例代码(路由模式)
82 0
|
消息中间件 存储 Java
消息中间件系列教程(09) -RabbitMQ -案例代码(发布订阅模式)
消息中间件系列教程(09) -RabbitMQ -案例代码(发布订阅模式)
65 0
|
消息中间件 Java Maven
消息中间件系列教程(08) -RabbitMQ -案例代码(工作队列模式)
消息中间件系列教程(08) -RabbitMQ -案例代码(工作队列模式)
64 0