消息队列
第一要有志,第二要有识,第三要有恒。
什么是消息?
消息就是两个独立系统间传递的数据,这两个系统可以是两台计算机,也可以是两个进程。 往小了说,消息可以是一个简单的字符串;往大了说,消息也能是被持久化操作了的各种文件。
什么是消息队列?
队列就是消息传输过程中的一个通道,是保存消息的容器。
队列秉承着先进先出的原则
为什么要使用队列 ?
使用队列的优点很多,如果把百度文库上的资料照搬来,我也颇觉头痛,难以理解。通俗点约四点:
1,提示消息传递的速度
如果系统没有基于消息队列来传递消息,那么它的运行速度就取决于系统中最慢的组件的速度 (就像团队中的短板效应)
而如果使用了队列,它会把系统中各个组件解耦,这样单一组件就不会受其他组件的影响,各组件可以异步运行,从而提升运行速度。
2,异步处理
很多时候你并不想立马处理消息,消息队列提供了异步处理机制,你可以把消息存在队列里,放那,想处理的时候在处理。
3,在高并发场景下平滑短时间内的大量服务请求
在高并发环境下 数据的访问量也许回达到一个很高的水平,如果你将最大服务请求作为标准来分配资源,这是极大的浪费,
这时候,使用消息队列能够使关键组件顶住增长的访问压力,而不是因为超出负荷的请求而完全崩溃。
4,安全
因为消息队列提供了冗余机制消息能被实际的处理,当你想从队列里删除消息时,需要你的处理过程明确的指出该消息已经被处理完毕,确保你的数据被安全的保存直到你使用完毕。
而且消息队列是排序的,能保证数据会按照特定的顺序来处理。
消息队列降低了进程间的耦合度,即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。