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

  • 时间:
  • 浏览:0
  • 来源:大发彩票快三—大发彩票app

随便说说,还有非常多的业务场景,是能只能考虑用MQ法律辦法 的,某些不多过后,也会占据 滥用的状态,亲戚亲戚大伙儿时要清楚认识亲戚亲戚大伙儿的业务场景:

发验证码短信、邮件,这个 过分依赖内部管理,某些时效性能只能接收几十秒延迟的,随便说说更好的法律辦法 是多程序异步除理,而就有不多依赖MQ。

秒杀抢购确保库存不为负数,更多的依赖高性能缓存(如redis),以及强制加锁,千万不多依赖消费者最终的返回结果。(实际工作中可能看一遍好十好多个 从前 的案例了)上游-下游 这个 直接的除理法律辦法 强度肯定是比 上游-MQ-下游 法律辦法 要高,MQ强度高,是可能,我却说我上游-MQ 这个 阶段就当做可能成功了。

提高系统性能首先考虑的是数据库的优化,过后一篇文章《数据库的使用你可能忽略了那此》所含提到过开发中,针对数据库时要注意的事项。某些数据库可能历史意味着 ,横向扩展是一件非常冗杂的工程,所有亲戚亲戚大伙儿一般会尽量把流量都挡在数据库过后。

不管是无限的横向扩展服务器,还是纵向阻隔到达数据库的流量,就有这个 思路。阻隔直达数据库的流量,缓存组件和消息组件是两大杀器。过后文章《Redis常见的应用场景解析》可能描述了最常用的缓存组件redis的应用场景,这麼今天,就重点话语MQ的应用场景。

系统之间进行数据交互的过后,在时效性和稳定性之间亲戚亲戚大伙儿都时要进行选择。基于程序的异步除理,能确保用户体验,某些极端状态下可能会出显异常,影响系统的稳定性,而同步调用不多过后无法保证理想的性能,这麼亲戚亲戚大伙儿就能只能用MQ来进行除理。上游系统将数据投递到MQ,下游系统取MQ的数据进行消费,投递和消费能只能用同步的法律辦法 除理,可能MQ接收数据的性能是非常高的,不用影响上游系统的性能,这麼下游系统的及时率能保证吗?当然能只能,不然就不用有下面的从前应用场景。

基于上文所述的特点,这麼MQ就衍生出了中的使用场景,在大型的系统中,应用非常广泛,这里亲戚亲戚大伙儿就列举一下常见的应用场景。

分布式事务是亲戚亲戚大伙儿开发中突然尽量除理的从前技术点,某些,现在不多的系统是基于微服务架构开发,这麼分布式事务成为时要要面对的现象,除理分布式事务有从前比较容易理解的方案,却说我二次提交。基于MQ的特点,MQ作为二次提交的里面节点,负责存储请求数据,在失败的状态能只能进行多次尝试,可能基于MQ中的队列数据进行回滚操作,是从前既能保证性能,又能保证业务一致性的方案,当然,这个 方案的主要现象却说我定制化较多,有一定的开发工作量。

MQ的发布订阅肯定就有却说我简单的一对一,从前上游和从前下游的关系,MQ里面件基本就有支持一对多可能广播的模式,某些都能只能根据规则选择分发的对象。从前 上游的一份数据,众多下游系统中,能只能根据规则选择是是否是接收那此数据,从前 扩展性就很强了。

PS:上文中的上游和下游,在MQ更多的是叫做生产者(producer)和消费者(consumer)。

为了更加直观的展示MQ的应用场景,这里亲戚亲戚大伙儿就用从前常见的电商系统中的十好多个 业务,来具体说明下MQ在实际开发中应用场景。

亲戚亲戚大伙儿的实际场景最少是从前基于微服务架构的电商系统,分为用户微服务、商品微服务、订单微服务、促销微服务等。基于微服务模式开发的系统,MQ的使用场景更多,下面亲戚亲戚大伙儿逐一说明:

1、注册后亲戚亲戚大伙儿可能时要做不多初始化的操作,如:调用邮件服务器发送邮件、调用促销服务赠送优惠劵、分发用户数据到客户关系系统等。这麼这过后亲戚亲戚大伙儿将那此操作去监听MQ,当用户注册成功过后,通过MQ通知某些业务进行操作。确保注册用户的性能。

2、后台发布商品的过后,商品数据时要从数据库中转加在搜索引擎数据(基于elasticsearch),这麼亲戚亲戚大伙儿应该将商品写入数据库后,再写入到MQ,某些通过监听MQ来生成elasticsearch对应的数据。

3、用户下单后,24小时未支付,时要注销订单。过后亲戚亲戚大伙儿可能是定时任务循环查询,某些注销订单。实际上,我更推荐类事延迟MQ的法律辦法 ,除理了不多无效的数据库查询,将从前MQ设置为24小时后才让消费者消费掉,从前 很大程度能只能减轻服务器压力。

4、支付完成后,时要及时的通知子系统(进销存系统发货,用户服务积分,发送短信)进行下一步操作,某些,支付回调亲戚亲戚大伙儿就有时要保证高性能的,不多,我你会直接修改数据库状态,存入MQ,让MQ通知子系统做某些非实时的业务操作。从前 能保证核心业务的高效及时。

image

上文有说了从前非常重要的形态学 ,MQ 数据是只能十根数据在使用中。 在不多占据 并发,而又对数据一致性要求高,某些对性能要求也高的场景,怎么可以保证,这麼MQ就能起这个 作用了。不管十好多个 流量进来,MQ后会你能只能遵守规则,排除除理,不用可能某些意味着 ,意味着 并发的现象,而出显不多意想只能脏数据。

这里就用到了前文从前重要的特点,发布订阅,下游系统突然在监听MQ的数据,可能MQ有数据,下游系统则会按照 先进先出 从前 的规则, 逐条进行消费 ,而上游系统只时要将数据存入MQ里,从前 就既降低了不同系统之间的耦合度,一并也确保了消息通知的及时性,某些却说我影响上游系统的性能。

MQ,Message queue,消息队列,却说我指保存消息的从前容器。具体的定义这里就不类事于数据库、缓存等,用来保存数据的。当然,与数据库、缓存等产品比较,就有当时人某些特点,具体的特点后文会做完全的介绍。

现在常用的MQ组件有activeMQ、rabbitMQ、rocketMQ、zeroMQ,当然近年来火热的kafka,从某些场景来说,也是MQ,当然kafka的功能更加强大,随便说说不同的MQ就有当时人的特点和优势,某些,不管是哪种MQ,就有MQ两种自带的某些特点,下面,咱们就先聊聊MQ的特点。

任何从前技术的出显,就有他的业务场景,只能清楚技术的特点,要能更加贴切的挖掘出应用场景,深入思考,深入实践要能将从前技术用在最最少的地方。