消息队列MQ
RabbitMQ以及一些其他的消息队列的使用及思考
zw791029369
to be or not to be
展开
-
使用消息队列的优点
使用消息队列的优点解耦通过 MQ,使用Pub/Sub 发布订阅消息这么一个模型,系统之间可以进行解耦。异步削峰使用消息队列的缺点系统可用性降低系统引入的外部依赖越多,越容易挂掉。本来 A 系统调用 BCD 三个系统的接口就好了,加个 MQ 进来,万一 MQ 挂了整套系统崩溃的就完了。此时需要考虑如何保证消息队列的高可用。系统复杂度提高需保证消息没有重复消费、消息丢失的情况、保证消息传递的顺序性等一致性问题A 系统处理完了直接返回成功,但是 BCD 三个原创 2020-11-08 17:00:31 · 321 阅读 · 0 评论 -
RabbitMQ的高可用机制
RabbitMQ高可用RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式单机模式(不推荐)一般生产环境没人用(但是我们公司用了,而且还遇到了MQ挂掉的问题,泪奔~~),主要用来本地跑个demo学习一下…普通集群模式(不推荐)在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个。你创建的 queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。你原创 2020-11-08 16:58:05 · 254 阅读 · 0 评论 -
Kafka如何保证高可用
Kafka高可用Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。如果用RabbitMQ来理解的话,可以将broker理解为RabbitMQ的每个节点,而每个topic就是一个queue,一个queue可以划分成多个分片,每个分片就是partition。这就是天然的分布式消息队列原创 2020-11-08 16:57:37 · 588 阅读 · 0 评论 -
RabbitMQ如何保证消息的幂等性、可靠性、顺序性
如何保证消息的幂等性所谓的幂等性其实就是保证同一条消息不会重复或者重复消费了也不会对系统数据造成异常。出现消息重复消费的情况拿RabbitMQ来说的话,消费者在消费完成一条消息之后会向MQ回复一个ACK(可以配置自动ACK或者手动ACK) 来告诉MQ这条消息已经消费了。假如当消费者消费完数据后,准备回执ACK时,系统挂掉了,MQ是不知道该条消息已经被消费了。所以重启之后MQ会再次发送该条消息,导致消息被重复消费,如果此时没有做幂等性处理,可能就会导致数据错误等问题。如何保证消息队列消费的幂等性这一原创 2020-11-08 16:56:55 · 12498 阅读 · 6 评论