为什么需要消息系统,mysql 不能满足需求吗?

1.解耦

允许你独立的扩展或修改两边的处理过程只要确保它们遵守同样的接口约束

2.冗余

消息队列把数据进行持久化直到它们已经被完全处理通过这一方式规避了数据 

丢失风险许多消息队列所采用的插入-获取-删除范式中在把一个消息从队 

列中删除之前需要你的处理系统明确的指出该消息已经被处理完毕从而确保 

你的数据被安全的保存直到你使用完毕

3.扩展性

因为消息队列解耦了你的处理过程所以增大消息入队和处理的频率是很容易的

只要另外增加处理过程即可

4.灵活性 & 峰值处理能力

 478   485 在访问量剧增的情况下应用仍然需要继续发挥作用但是这样的突发流量并不 

常见如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪 

使用消息队列能够使关键组件顶住突发的访问压力而不会因为突发的超负 

荷的请求而完全崩溃

5.可恢复性

系统的一部分组件失效时不会影响到整个系统消息队列降低了进程间的耦合 

所以即使一个处理消息的进程挂掉加入队列中的消息仍然可以在系统恢复 

后被处理

6.顺序保证

在大多使用场景下数据处理的顺序都很重要大部分消息队列本来就是排序的

并且能保证数据会按照特定的顺序来处理。(Kafka 保证一个 Partition 内的消 

息的有序性

7.缓冲

有助于控制和优化数据流经过系统的速度解决生产消息和消费消息的处理速度 

不一致的情况

8.异步通信

很多时候用户不想也不需要立即处理消息消息队列提供了异步处理机制 

许用户把一个消息放入队列但并不立即处理它想向队列中放入多少消息就放 

多少然后在需要的时候再去处理它们

posted @ 2020-11-28 16:21  咔啡  阅读(205)  评论(0编辑  收藏  举报