MQ
一条路上的咸鱼
小白程序员一枚
0. 微信公众号(码农翻身录:coder_xiaobu)
1. [博客园](https://www.cnblogs.com/jack1995/)
2. [简书](https://www.jianshu.com/u/5ea1795d1adf)
3. [掘金](https://juejin.im/user/5ac308786fb9a028d444c410/posts)
4. [CSDN](https://me.csdn.net/jack199504)
5. [语雀](https://www.yuque.com/mujingjing)
展开
-
关于MQ的几件小事(一)消息队列的用途、优缺点、技术选型
1.为什么使用消息队列?(1)解耦:可以在多个系统之间进行解耦,将原本通过网络之间的调用的方式改为使用MQ进行消息的异步通讯,只要该操作不是需要同步的,就可以改为使用MQ进行不同系统之间的联系,这样项目之间不会存在耦合,系统之间不会产生太大的影响,就算一个系统挂了,也只是消息挤压在MQ里面没人进行消费而已,不会对其他的系统产生影响。(2)异步:加入一个操作设计到好几个步骤,这些步骤之间不需...原创 2019-05-22 22:09:32 · 1041 阅读 · 0 评论 -
关于MQ的几件小事(二)如何保证消息队列的高可用
1.RabbitMQ的高可用RabbitMQ基于主从模式实现高可用。RabbitMQ有三种模式:单机模式,普通集群模式,镜像集群模式。(1)单机模式:单机模式就是demo级别的,生产中不会有人使用。(2)普通集群模式普通集群模式就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。但是创建的queue只会放在一个rabbitmq实例上面,但是其他的实例都同步了这个queue的元...原创 2019-05-22 22:12:09 · 389 阅读 · 0 评论 -
关于MQ的几件小事(三)如何保证消息不重复消费
1.幂等性幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都...原创 2019-05-22 22:13:33 · 1412 阅读 · 0 评论 -
关于MQ的几件小事(四)如何保证消息不丢失
1.mq原则数据不能多,也不能少,不能多是说消息不能重复消费,这个我们上一节已解决;不能少,就是说不能丢失数据。如果mq传递的是非常核心的消息,支撑核心的业务,那么这种场景是一定不能丢失数据的。2.丢失数据场景丢数据一般分为两种,一种是mq把消息丢了,一种就是消费时将消息丢了。下面从rabbitmq和kafka分别说一下,丢失数据的场景,(1)rabbitmqA:生产者弄丢了数据生产者...原创 2019-05-22 22:15:17 · 4011 阅读 · 0 评论 -
关于MQ的几件小事(五)如何保证消息按顺序执行
1.为什么要保证顺序消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常。举例:比如通过mysql binlog进行两个数据库的数据同步,由于对数据库的数据操作是具有顺序性的,如果操作顺序搞反,就会造成不可估量的错误。比如数据库对一条数据依次进行了 插入->更新->删除操作,这个顺序必须是这样,如果在同步过程中,消息的...原创 2019-05-22 22:16:41 · 1673 阅读 · 0 评论 -
关于MQ的几件小事(六)消息积压在消息队列里怎么办
1.大量消息在mq里积压了几个小时了还没解决场景: 几千万条数据在MQ里积压了七八个小时,从下午4点多,积压到了晚上很晚,10点多,11点多。线上故障了,这个时候要不然就是修复consumer的问题,让他恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不行。一个消费者一秒是1000条,一秒3个消费者是3000条,一分钟是18万条,1000多万条。所以如果你积压了几百万到上千万的数据,即使...原创 2019-05-22 22:18:17 · 1715 阅读 · 0 评论 -
关于MQ的几件小事(七)如果让你设计一个MQ,你怎么设计
其实回答这类问题,说白了,起码不求你看过那技术的源码,起码你大概知道那个技术的基本原理,核心组成部分,基本架构构成,然后参照一些开源的技术把一个系统设计出来的思路说一下就好比如说这个消息队列系统,我们来从以下几个角度来考虑一下(1)首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka的设计理念,broker ->...原创 2019-05-22 22:21:12 · 542 阅读 · 0 评论