![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mq
杀神Q
迟早是个架构师的小码农
展开
-
如何处理消息丢失的问题?
如何处理消息丢失的问题?用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。一.RabbitMQ生产者弄丢了数据生产者将数据发送到 RabbitMQ 的原创 2020-06-05 20:53:28 · 277 阅读 · 0 评论 -
如何保证消息的高可用性
如何保证消息的高可用性RabbitMQ 的高可用性RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。单机模式单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的????,没人生产用单机模式。普通集群模式(无高可用性)普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个。你创建的 queue原创 2020-06-05 20:27:16 · 569 阅读 · 0 评论 -
消息队列有什么优缺点
消息队列有什么优缺点优点:解耦,异步,削峰解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!如果使用 MQ,A 系统产生一条数据,发送到原创 2020-06-05 20:25:58 · 116 阅读 · 0 评论 -
如何保证消息消费的幂等性?
如何保证消息消费的幂等性?幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。怎么保证消息队列消费的幂等性?结合业务来思考:如果你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。如果你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。如果你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西,然后你这里消费原创 2020-06-05 20:32:20 · 136 阅读 · 0 评论