RocketMQ的消息队列

消息队列的特征:
1.业务无关。消息队列不需要考虑上层的业务模型,只需要做好消息分发;
2.FIFO。先投递先到达的保证是一个消息队列和一个buffer(缓存)的本质区别;
3.容灾。主要包括节点的动态增删和消息的持久化。
4.性能。消息队列的吞吐量提升,则整个系统的内部通信效率就会提高。

为什么需要消息队列?
当系统中出现“生产”与“消费”的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。“消息”是在两台计算机间传送的数据单位,“消息队列”是在消息的传输过程中保存消息的容器。

举几个例子
1)业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力。就可以把短信发送申请丢到消息队列,直接返回用户成功,短信发送模块再可以慢慢去消息队列中取消息进行处理。
2)调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。
3)任务处理类的系统,先把用户发起的任务请求接收过来存到消息队列中,然后后端开启多个应用程序从队列中取任务进行处理。

使用消息系统的好处:
1.提高系统响应速度
使用了消息队列,生产者一方,把消息往队列里一扔,就可以立马返回,无需等待处理结果。处理结果可以让生产者稍后主动自己来取,如来医院取化验单;也可以让生产者订阅,如让生产者实现Listener接口加入监听队列。
2.提高系统稳定性
1)两个系统之间,如果没有消息队列,系统B挂了,系统A向系统B发送的数据丢失,业务无法展开。因此两个系统不应该如此紧密耦合,应该通过消息队列解耦,同时让系统更加健壮、稳定。
2)N多玩家同时通过A系统访问B系统,达到B系统瓶颈,如果此时A、B系统之间有一个消息队列,则可以起到异步化、缓冲与消除峰值的作用,防止出现玩家登陆不上或频繁掉线的情况。

猜你喜欢

转载自www.cnblogs.com/yuanfei1110111/p/10135393.html