什么是消息:A要通知B,发送的东西叫做消息。

什么是队列:先进先出,顺序。

只要是涉及到消息队列,肯定要处理事务问题。

事务:原子性。我所有的动作,要么都不执行,要不全部执行成功。

比如说:张三给我转账100元。可以拆分为两个动作:张三账户减100,我的账户加100.

传统串行化服务。

缺点:

  1. 耦合性强(系统各个模块之间耦合性太强),只有全部成功才算成功
  2. 系统吞吐量不大,耗时多

优点:系统架构简单,排查错误方便。

事务:原子性。所有动作,要么都不执行要么全执行成功。

并联型:

优点:解耦性强,提升性能

缺点:只要涉及到消息队列,肯定要处理事务问题。

mq:无视底层通讯会议。

为了解决重复通知的问题:可以使用分布式锁。

什么是MQ

Message Query(MQ),消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用,mq真正的目的是为了通讯。他屏蔽了复杂的通讯协议,像常用的dubbo,http协议都是同步的。

这两种协议很难实现双端通讯,A调用B,B也可以主动调用A,而且不支持长连接。mq做的就是在这些协议上构建一个简单协议——生产者、消费者模型,mq带给我们的不是底层的通讯协议,而是更高层次的通讯模型。他定义了两个对象:发送数据的叫做生产者,接受消息的叫做消费者,我们可以无视底层的通讯协议,我们可以自己定义生产者消费者。

MQ的两种流派

1,有broker的

broker是什么,可以理解为是一个中转站。生产者将消息发送给他就结束自己的任务了,broker将消息主动推送给消费者(具体的将消息推送到哪个队列,或者说消费者主动请求)

重topic

必须要有topic

kafka:全球消息处理性能最快的一款mq

rocket:阿里内部的一个大神根据kafka的执行原理手写的,性能与kafka差不多,但是功能上比kafka要多,比如说顺序消费。

轻topic

可以没有topic,topic只是一种中转模式

rabbitmq

2,无broker的

zeromq:没有使用broker,是直接使用socket进行通信。

穿插知识点

并行和并发的区别

事务简单介绍

消息队列和普通串行程序相比有哪些优缺点

Logo

开源、云原生的融合云平台

更多推荐