什么是消息队列
消息队列是消息在传输过程中保存消息的容器。
为什么使用消息队列
受限于系统性能(吞吐量、并发、响应时间等)以及为了实现应用解耦和通讯模式,消息队列是实现这些目标的重要角色,下面例举使用场景一一说明:
异步处理
注册后,我们需要向用户手机、邮箱发送消息,推荐志同道合的人,再响应用户,这一系列的业务的处理需要用户花费大把时间等待;
这时我们可以引入消息队列,把注册信息写入DB后就响应用户,将那些不是必须的业务放入消息队列中异步执行,如此大大加快了响应时间。
解耦
在生产者与消费者中,传统做法是把生产系统的数据直接交给消费系统处理,这样当消费系统异常故障的时候,生产者的数据无法及时处理,导致生产系统崩溃;
如果把生产系统的数据交给消息队列,消费系统从消息队列中获取数据,如此不管是生产系统还是消费系统异常故障都不会引起对方崩溃,实现了应用解耦。
流量削峰
在秒杀开始时,由于流量突增引起系统宕机。加入消息队列后,当人数超过了消息队列的长度,就不再接收新的秒杀请求,秒杀业务根据消息队列的请求信息再做后续处理,这样就控制了流量,缓解了系统短时间内的压力。
日志处理
大量日志的系统中,我们需要实时分析日志数据。但是在高峰期时日志输出远远大于日志处理的吞吐量,为了解决这一难题,我们可以把日志输出到kafka队列,再由日志处理系统从kafka读取日志。
消息通讯
消息队列的高效通讯机制适用于消息通讯,比如点对点通讯、或者发布订阅模式。
实现方案
在选择那种技术实现的时候,针对于消息队列使用场景的特性,要考虑如速度、安全、复杂度等因素,目前主流的方案有redis、activeMQ、kafka
时间: 2024-10-10 20:29:16