![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MQ
简单251654
这个作者很懒,什么都没留下…
展开
-
消息队列-如何设计一个消息中间件架构?
如何设计一个消息中间件架构?如果让你写一个消息队列,该如何进行架构设计?说下你的思路这种问题,说白了,起码不求你看过那些技术的源码,但是你应该大概知道那些技术的基本原理,核心组成部分,基本架构个构成,然后参照一些开源技术把一个系统设计出来的思路说一下就好了。思路首先MQ得支持可伸缩性,那就需要快速扩容,就可以增加吞吐量和容量,可以设计一个分布式的系统,参考kafka的设计理念,broker - > topic -> partition,每个partition放一台机器,那就存一部原创 2020-06-19 18:24:15 · 642 阅读 · 0 评论 -
消息队列-如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
百万消息积压在队列中如何处理?如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有百万消息积压接小时,说说解决思路?剖析MQ大幅度积压这件事挺常见的,一般不出,出了的话就是大型生产事故,例如:消费端每次消费之后要写MySQL,结果MySQL挂了,消费端就不动了,或者一直出错,导致消息消费速度极其慢。场景1:积压大量消息几千万的消息积压在MQ中七八个小时,这也是一个真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复consumer,让他恢复消费速度,然后傻傻的原创 2020-06-19 18:00:52 · 954 阅读 · 1 评论 -
消息队列-如何保证消息的顺序性?
如何保证消息的顺序性?场景以前做过一个MySQL binlog同步系统,压力还是非常大的,日同步数据要达到上亿。常见一点的在于 大数据项目中,就需要同步一个mysql库过来,然后对公司业务的系统做各种的复杂操作。在mysql里增删改一条数据,对应出来的增删改3条binlog,接着这三条binlog发送到MQ里面,到消费出来依次执行,这个时候起码得保证能够顺序执行,不然本来是:增加、修改、删除,然后被换成了:删除、修改、增加,不全错了呢。本来这个数据同步过来,应该是最后删除的,结果因为顺序搞错原创 2020-06-17 23:02:22 · 4245 阅读 · 3 评论 -
消息队列-如何保证消息传输不丢失?
如何保证消息传输不丢失?如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。面试题剖析数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和原创 2020-06-16 22:17:33 · 1120 阅读 · 0 评论 -
消息队列-如果保证消息的重复消费?怎么保证消息队列消费的幂等性?
面试题:如何保证消息的重复消费?如何保证消息消费的幂等性?剖析其实这是一个常见的问题,既然是消费消息,那肯定是要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?关于消息重复消费的问题,其实本质上就是问你使用消息队列如何保证幂等性,这个是你架构中要考虑的问题。首先是比尔RabbitMQ、RocketMQ、Kafka都会出现消息重复消费的问题,因为这个问题通常不是MQ自己保证的,而是保证消息的不丢失,我们首先从Kafka上来说:kafka实际上有个offset的概念原创 2020-06-16 17:59:43 · 1549 阅读 · 0 评论 -
消息队列-如何保证消息队列的高可用?
剖析这个问题用的很好,不会具体到某个MQ,而是问一个整体,然后通过你使用的MQ,来具体谈谈该MQ的可用性的理解。RabbitMQ高可用性RabbitMQ是比较有代表性的,因为是基于主从做高可用性的。RabbitMQ 三种模式:单机模式,普通集群模式,镜像集群模式单机模式就是demo级别的,一般就是本地启动后玩一玩,没有人生产环境中使用。普通集群模式意思就是在多台机器上启动多个RabbitMQ实例,每台机器启动一个,但是创建的Queue,只会放在一个RabbitMQ实例上,但是原创 2020-06-16 11:14:58 · 987 阅读 · 0 评论 -
消息队列-Kafka、activeMQ、RibbitMQ、RocketMQ都有什么优缺点
主流MQ包括:kafka、ActiveMQ、RabbitMQ和RocketMQ常见的MQ其实就上面的四种特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低一个数量级 万级,吞吐量比RocketMQ和Kafka要低一个数量级 10万级,RocketMQ也是可以支撑高吞吐的一种MQ 10万级1这是kafka最大的优点,就是吞吐量高。一般配置和数据类的系统进行实时数据计算、日原创 2020-06-15 16:05:42 · 528 阅读 · 0 评论 -
消息队列-消息队列有什么优点和缺点?
优点上面已经说了:解耦、异步、削峰,缺点呢?显而易见的系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统接口就好了,人家ABCD四个系统好好的,没啥问题,这个时候却加入了MQ进来,万一MQ挂了怎么办?MQ挂了整套系统也会崩溃了。 系统复杂性提高:硬生生加个MQ进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性? 一致性问题:A系统处理完了直接返回成功了,人都以为你的请求成功了,但是问题是,要在BCD三个系统中,BD两个系统写库成功了原创 2020-06-15 16:03:55 · 996 阅读 · 0 评论 -
消息队列-解耦、异步、削锋
A系统发送数据到B、C、D系统,但没有使用消息队列时候的耦合场景当后面系统不断增加,比如 E,F系统的加入,以及D系统的移除因为A系统和其它各种系统耦合起来,那么需要处理的事情会给出多使用MQ后系统A发送一条消息,到消息队列中,哪个系统需要获取到哪里,那么从MQ中消费数据,如果新系统E加入的话,那么只需要编写代码,然后也直接从MQ中消费即可,当系统D不需要这个数据时,那么只需要不对该消息进行消费即可。系统A不需要考虑给谁发送数据,也不需要维护这个代码,不需要考虑人家是否调用成功、失败原创 2020-06-12 16:01:35 · 675 阅读 · 0 评论 -
消息队列-面试连环炮
你用过消息队列么? 说说你们项目里是怎么用消息队列的? 我们有一个订单系统,订单系统会每次下一个新订单的时候,就会发送一条消息到ActiveMQ里面去,后台有一个库存系统,负责获取消息,然后更新库存。 为什么使用消息队列? 你的订单系统不发送消息到MQ,而是直接调用库存系统的一个接口,然后直接调用成功了,库存也更新了,那就不需要使用消息队列了呀 使用消息队列的主要作用是:异步、解耦、削峰 消息队列都有什么优缺点? Kafka、activeMQ、RibbitMQ、RocketMQ都有什原创 2020-06-12 15:58:36 · 204 阅读 · 0 评论