聊聊:消息队列

在开发过程中,不是所有的数据都需要实时处理,也不是所有的请求都必须实时反馈结果给用户,所有的处理只要保证最终的结果是一致就OK。此时可以考虑使用消息队列来解决这些问题。

在实际开发中,我们使用消息队列进行异步处理、系统解耦、数据同步、流量控制。

使用场景:

异步处理:使用队列一个主要原因是进行异步处理:比如用户注册成功后,需要发送注册成功的邮件、新用户积分、优惠劵等等。通过异步处理,可以提升主流程响应速度,而非主流程、非重要业务可以异步处理

,这样可以任务聚合然后批量处理。

系统解耦:比如用户成功支付完成订单后,需要通知生产配货系统、发票系统、库存系统、推荐系统、搜索系统等进行业务处理;而未来需要添加/支持哪些业务还不是很清楚的,而这些业务不需要实时处理、不需要强一致性,只需要最终一致性。

数据同步:比如想把MYSQL变更数据同步到Redis\或者MYSQL同步到Mongodb\或者机房间数据同步

流量消峰:系统瓶颈一般在数据库,比如扣减库存、下单等;此时可以考虑使用队列变更请求暂时放入队列,通过缓存+队列暂存的方式将数据库流量消峰;

时间: 2024-08-05 12:16:13

聊聊:消息队列的相关文章

简单聊聊消息队列的事务补偿机制

转自:https://my.oschina.net/u/1589819/blog/1503241 因为一直学习与尝试负责公司的推送相关业务,包括整个应用的实现,其中就采用了基于消息队列的异步事件驱动模型来做解耦异步处理,所以就要去做了解一些相关的知识点,这边稍作总结,并整理一下消息补偿机制的一套简单实现的代码设计图. 采用基于消息队列的异步事件驱动模型来解决问题的时候,一个计较棘手的问题就是事务的一致性. 案例:现在用户发起一个创建订单的请求,如果我们是单系统架构,那么修改订单表,修改库存表可能

分布式之消息队列复习精讲

引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识. 庆幸的是两位朋友都很有上进

为什么分布式一定要有消息队列?

0 为什么写这篇文章?博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识.1 为什么要使用消息队列分析:一

MQ(消息队列)常见的应用场景解析

前言 j提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对数据库需要注意的事项.但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所有我们一般会尽量把流量都挡在数据库之前. 不管是无限的横向扩展服务器,还是纵向阻隔到达数据库的流量,都是这个思路.阻隔直达数据库的流量,缓存组件和消息组件是两大杀器. MQ简介 MQ,Message queue,消息队列,就是指保存消息的一个容器.具体的定义这里就不类似于数据库.缓存等,用来保存数据的.当然

消息中间件系列第1讲:为什么要用消息队列?

消息队列中间件可以说是Java开发中最常使用的一块技术了,基本上上了规模的系统都会使用消息队列来优化系统架构.那么为什么要使用消息队列?我们使用消息队列来解决什么问题呢? 消息队列的优点 对于大多数系统来说,我们使用消息队列来做下面三件事情:解耦.削峰.异步.[1] 第一个作用:解耦. 在多个系统中,如果使用传统模式来做,那么使用传统模式将是这样的: 传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码.如果将来D系统接入,系统A还需要修改代码,过于麻烦! 但

消息中间件系列第2讲:如何进行消息队列选型?

要做技术选型,那么必须对现今的各个消息中间件有个深入的理解才能做技术选型.否则别人问你,你为什么要用这个消息中间件,你说不出个所以然来,怎么做架构师呢? 截止到目前为止,现在业界流行的消息队列中间件有:Redis.ActiveMQ.RabbitMQ.RocketMQ.Kafka.下面我们将逐个对他们进行分析介绍. Redis 在我们印象中,Redis 是一个 key-value 缓存中间件,而不是一个消息队列中间件.但事实上它本身支持 MQ 功能,所以完全可以当做一个轻量级的队列服务来使用.对于

一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识. 庆幸的是两位朋友都很有上进心,于

【转】分布式之消息队列复习精讲

转自:https://www.cnblogs.com/rjzheng/p/8994962.html 引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是

消息队列原理及ActiveMQ、RocketMQ、RabbitMQ、Kafka区别总结

消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识. 庆幸的是两位朋友都很有