高并发设计系列-消息队列篇

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 高并发设计系列-消息队列篇

形成天才的决定因素应该是勤奋。——郭沫若


1 削峰填谷



在秒杀场景中比较常见,就是削平短暂的流量高峰,即使队列有挤压导致请求被短暂的延迟处理,但是只要我们实时监控队列中的堆积长度,在堆积量超过一阈值时,增加队列处理机就行了。

2 异步处理



我们秒杀场景中有重要的业务逻辑(生成订单,扣减库存),也有次要的业务逻辑(发放优惠卷,增加积分)。如果把次要的业务逻辑放到队列中异步处理,那么重要的逻辑就会相应的减少延迟,一定程度上解决用户等待过长时间的问题。

3 解耦合



除了异步处理和削峰填谷以外,消息队列在秒杀系统中起到的另一个作用是解耦合。


比如我们大数据团队想要获取商品活动的数据,那么在秒杀这样重要的场合我们可以选择处理的方式很多,比如http或者rpc同步调用大数据服务主动上报,但是这样明显会有缺陷,当大数据有问题的时候(比如延迟增加或者网络抖动),直接拖垮我们的秒杀服务,影响用户体验。因此最好的方式是解耦合,把这些活动的数据写入队列,这样大数据团队就可以订阅这个topic,然后获取数据做过滤和处理了。

4 小结



  1. 削峰填谷是消息队列最主要的作用,但是会造成请求处理的延迟。
  2. 异步处理是提升系统性能的神器,但是你需要分清同步逻辑和异步逻辑的边界,同时消息存在着丢失的风险,我们需要考虑如何确保消息一定到达。
  3. 解耦合可以提升你的系统整体的鲁棒性。


5 关注公众号



微信公众号:堆栈future

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
消息中间件 算法 Dubbo
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
119 0
|
消息中间件 负载均衡 前端开发
【高并发】为何高并发系统中都要使用消息队列?这次彻底懂了!
很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗?
812 0
【高并发】为何高并发系统中都要使用消息队列?这次彻底懂了!
|
消息中间件 负载均衡 前端开发
为何高并发系统中都要使用消息队列?这次彻底懂了!
很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗?
291 0
为何高并发系统中都要使用消息队列?这次彻底懂了!
|
消息中间件 负载均衡 前端开发
【高并发】为何高并发系统中都要使用消息队列?这次彻底懂了!
很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗? 本文集结了众多技术大牛的编程思想,由冰河汇聚并整理而成,在此,感谢那些在技术发展道理上默默付出的前辈们!
185 0
【高并发】为何高并发系统中都要使用消息队列?这次彻底懂了!
|
消息中间件 负载均衡 前端开发
【高并发】为何高并发系统中都要使用消息队列?这次彻底懂了!
很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗?
192 0
|
消息中间件 前端开发 Kafka
高并发之消息队列
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 消息被处理的过程相当于流程A被处理。我们这里以一个实际的模型来讨论下,比如用户下单成功时给用户发短信,如果没有这个消息队列,我们会选择同步调用发短信的接口, 并等待短息发送成功,这时候假设短信接口实现出现问题了,或者短信调用端超时了,又或者短信发送达到上限了,我们是选择重试几次还是放弃,还是选择把这个放到数据库 过一段时间再看看呢,不管怎样,实现都很复杂。
2302 1
|
消息中间件 存储 JavaScript
高并发架构系列:如何从0到1设计一个MQ消息队列
消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具备的特征。
2569 0
|
消息中间件 架构师 中间件
组队学架构之高并发架构系列:详解RPC远程调用和消息队列MQ的区别
RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。 RPC框架 知名度较高的有Thrift(FB的)、dubbo(阿里的)。
3158 0
|
6月前
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
533 0
|
4月前
|
监控 算法 Java
企业应用面临高并发等挑战,优化Java后台系统性能至关重要
随着互联网技术的发展,企业应用面临高并发等挑战,优化Java后台系统性能至关重要。本文提供三大技巧:1)优化JVM,如选用合适版本(如OpenJDK 11)、调整参数(如使用G1垃圾收集器)及监控性能;2)优化代码与算法,减少对象创建、合理使用集合及采用高效算法(如快速排序);3)数据库优化,包括索引、查询及分页策略改进,全面提升系统效能。
55 0