在进行网站设计的时候,有时候会遇到给用户大量发送短信,或者订单系统有大量的日志需要记录,还有做秒杀设计的时候,服务器无法承受这种瞬间的压力,无法正常处理,咱们怎么才能保证系统正常有效的运行呢?
这时候我们就要引用消息队列来实现这类的需求,这时候就需要一个中间的系统进行分流和解压。消息队列就是一个中间件,需要配合其他合理使用。
消息队列的概念、原理和场景
本质上讲,消息队列结构就是一个队列结构的中间件,也就是说把消息和内容放入这个容器之后,就可以直接的返回,不需要等它后期处理的结果,另外会有一个程序会读取这些数据,并按照顺序进行逐个的处理,也就是说按照并发非常大的一个环节的时候,同时呢你又不需要立即获得这个环节的返回结果,那么使用消息队列可以比较好的解决这个问题。一个经典的消息队列结果应该是这样的过程: 由一个业务系统进行入队,把消息逐个插入消息队列中,插入成功之后直接返回成功的结果,然后后续有一个消息处理系统,这个系统会把消息队列中的记录逐个进行取出并且进行处理,进行出队的操作。
消息系统适合的场景冗余 首先数据需要冗余的时候,比如经常做订单系统,后续需要严格的转换和记录,消息队列可以把这些数据持久化存储在队列中,然后由订单处理程序进行获取,后续处理完成之后再把这条记录删除,保证每条记录都能处理完成。
解耦 消息队列分离了两套系统,解决了两套系统深度耦合的问题。使用消息队列后,入队的系统和出队的系统没有直接的关系,入队系统和出队系统其中一套系统崩溃的时候,都不