什么是MQ
首先什么是消息:A要通知B,发送的东西叫做消息。什么是队列:先进先出顺序。
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进行通信。
事务简单介绍
只要是涉及到消息队列,肯定要处理事务问题。
事务:原子性。我所有的动作,要么都不执行,要不全部执行成功。
比如说:张三给我转账100元。可以拆分为两个动作:张三账户减100,我的账户加100.但是这两个动作必须全部执行成功
架构设计:
要从功能模块的访问量来选择。优秀的程序架构设计需要遵循的守则:低耦合,高内聚
一、传统串行化服务流程

二、消息队列服务流程

消息队列和普通串行程序相比有哪些优缺点
普通串行化程序缺点1.耦合性强。2.系统吞吐量不大,耗时多
优点:系统架构简单,排查错误简单
消息队列优点:解耦、吞吐量大。适用于用户量大的系统。当每个功能出现多个服务时,为了解决重复通知的问题:可以用分布式锁。
关于消息队列的思考:
比如说客户端每一秒钟向队列生产1万条消息,但是消费者每一秒钟只能消费100条消息。怎么办?(消息堆积问题怎么解决)
方案1,可以增加消费者。
方案二:限流,先过滤到一部分请求。
本文探讨了MessageQueue(MQ)的基本概念,如生产者-消费者模型和不同流派(有broker与无broker)。重点介绍了如何利用MQ实现解耦和高吞吐量,以及在处理消息堆积问题上的策略,包括增加消费者和限流。同时涵盖了Kafka和RabbitMQ等流行MQ的选择及其事务处理机制。
2616

被折叠的 条评论
为什么被折叠?



