RabbitMQ(二)-为什么要用消息队列

409 阅读1分钟

场景A: 当用户登录的时候,需要发送短信到用户的手机,提示:账户已登录,请注意是否是自己登录或密码泄露。

场景B:当用户登录的时候,奖励积分10分,同时刷新积分显示;

场景C:当用户登录的时候,营销部门想统计这些用户的登录时间。

场景D:...

场景E:...

如果是硬编码,随着场景的增加,那么代码每次都要修改,且容易出错。 如果使用队列,可以解耦、异步、日志收集、事务最终一致性等等。

1、解耦; 比如:当用户登录时候,需要调用短信服务; 过了一段时间,当用户登录时,增加需要调用积分服务; 过了一段时间,当用户登录时,增加需要调用日志服务;

2、流量削峰 当遇到高并发的场景时将会给数据库 带来巨大压力 , 并发访问量大到超过了原先系统的承载能力, 会使系统的响应延应加剧。

3、日志收集 利用消息队列产品在接收和持久化消息方面的高性能,引入消息队列快速 接收日志消息,避免因为写入日志时的某些故障导致业务系统访问阻塞、 请求延迟等。

4、事务最终一致性 (1)同一个事务 (2)分布式事务 (3)消息队列处理(简单地讲, 在支付宝账户扣钱的同时发送一条让余额宝账户加钱的消息到消息队列)