MQ那点事
介绍MQ使用场景和使用问题
俊逸-超凡
这个作者很懒,什么都没留下…
展开
-
MQ那点事(七)---MQ落地,你的设计应用
其实回答这类问题,说白了,起码不求你看过那技术的源码,起码你大概知道那个技术的基本原理,核心组成部分,基本架构构成,然后参照一些开源的技术把一个系统设计出来的思路说一下就好比如说这个消息队列系统,我们来从以下几个角度来考虑一下(1)首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka的设计理念,broker ->...转载 2020-03-05 11:02:04 · 289 阅读 · 0 评论 -
MQ那点事(六)---消息积压在消息队列里怎么办
1.大量消息在mq里积压了几个小时了还没解决场景:几千万条数据在MQ里积压了七八个小时,从下午4点多,积压到了晚上很晚,10点多,11点多。线上故障了,这个时候要不然就是修复consumer的问题,让他恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不行。一个消费者一秒是1000条,一秒3个消费者是3000条,一分钟是18万条,1000多万条。所以如果你积压了几百万到上千万的数据,即使消...转载 2020-03-05 10:58:47 · 901 阅读 · 0 评论 -
MQ那点事(五)---如何保证消息按顺序执行
1.为什么要保证顺序消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常。举例:比如通过mysql binlog进行两个数据库的数据同步,由于对数据库的数据操作是具有顺序性的,如果操作顺序搞反,就会造成不可估量的错误。比如数据库对一条数据依次进行了 插入->更新->删除操作,这个顺序必须是这样,如果在同步过程中,消息的...转载 2020-03-04 18:09:17 · 1395 阅读 · 0 评论 -
MQ那点事(四)---如何保证消息不丢失
1.mq原则数据不能多,也不能少,不能多是说消息不能重复消费,这个我们上一节已解决;不能少,就是说不能丢失数据。如果mq传递的是非常核心的消息,支撑核心的业务,那么这种场景是一定不能丢失数据的。2.丢失数据场景丢数据一般分为两种,一种是mq把消息丢了,一种就是消费时将消息丢了。下面从rabbitmq和kafka分别说一下,丢失数据的场景,(1)rabbitmqA:生产者弄丢了数据生产者...转载 2020-03-04 18:04:35 · 492 阅读 · 0 评论 -
MQ那点事(三)---如何保证消息不重复消费
1.幂等性简单来说,幂等性就是一个数据或者一个请求,给你重复来了多次,你得确保对应的数据是不会改变的,不能出错。2.出现重复消费场景(1)首先,比如rabbitmq、rocketmq、kafka,都有可能会出现消息重复消费的问题。因为这个问题通常不是由mq来保证的,而是消费方自己来保证的。(2)举例kafka来说明重复消费问题kafka有一个叫做offset的概念,就是每个消息写进去,都...转载 2020-03-04 17:53:23 · 548 阅读 · 0 评论 -
MQ那点事(二)---如何保证消息队列的高可用
1.RabbitMQ的高可用RabbitMQ基于主从模式实现高可用。RabbitMQ有三种模式:单机模式,普通集群模式,镜像集群模式。(1)单机模式:单机模式就是demo级别的,生产中不会有人使用。(2)普通集群模式普通集群模式就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。但是创建的queue只会放在一个rabbitmq实例上面,但是其他的实例都同步了这个queue的元...转载 2020-03-04 17:51:13 · 135 阅读 · 0 评论 -
MQ那点事(一)---消息队列的用途、优缺点、技术选型
1.为什么使用消息队列?(1)解耦:可以在多个系统之间进行解耦,将原本通过网络之间的调用的方式改为使用MQ进行消息的异步通讯,只要该操作不是需要同步的,就可以改为使用MQ进行不同系统之间的联系,这样项目之间不会存在耦合,系统之间不会产生太大的影响,就算一个系统挂了,也只是消息挤压在MQ里面没人进行消费而已,不会对其他的系统产生影响。(2)异步:加入一个操作设计到好几个步骤,这些步骤之间不需...转载 2020-03-04 17:46:16 · 377 阅读 · 0 评论