消息队列
乡村非主流2020
这个作者很懒,什么都没留下…
展开
-
Redis做消息队列与其他消息队列相比有什么不同 2020面试必看
Redis做消息队列与其他消息队列相比有什么不同Redis作为消息队列:·如果你的需求是快产快消的即时消费场景,并且生产的消息立即被消费者消费掉。·如果速度是你十分看重的,比如慢了一秒好几千万这种。·如果允许出现消息丢失的场景。·如果你不需要系统保存你发送过的消息。·如果需要处理的数据量并不是那么巨大。其他消息队列:·如果你想要稳定的消息队列。·如果你想要你发送过的消息可以保留一定的时间,并不是无迹可寻的时候。·如果你无法忍受数据的丢失。·如果速...原创 2020-06-12 10:09:50 · 518 阅读 · 0 评论 -
如果让你写一个消息队列,该如何进行架构设计?2020面试必看
如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。其实聊到这个问题,一般面试官要考察两块:·你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。·看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来。说实话,问类似问题的时候,大部分人基本都会蒙,因为平时从来没有思考过类似的问题,大多数人就是平时埋头用,从来不去思考背后的一些东西。类似的问题,比如,如果让你来设计一个Sprin..原创 2020-06-12 10:09:36 · 209 阅读 · 0 评论 -
如何解决消息队列的延时以及过期失效问题 2020面试必看
如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如RabbitMQ设置了消息过期时间后就没了怎么办?所以就这事儿,其实线上挺常见的,一般不出,一出就是大case。一般常见于,举个例子,.原创 2020-06-12 10:09:25 · 580 阅读 · 0 评论 -
如何保证消息的顺序? 2020面试必看
我举个例子,我们以前做过一个mysqlbinlog同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个mysql库原封不动地同步到另一个mysql库里面去(mysql -> mysql)。常见的一点在于说比如大数据team,就需要同步一个mysql库过来,对公司的业务系统的数据做各种复杂的操作。你在mysql里增删改一条数据,对应出来了增删改3条binlog日志,接着这三条binlog发送到MQ里面,再消费出来依次执行,起码得保证人家是按照顺序来...原创 2020-06-12 10:09:11 · 88 阅读 · 0 评论 -
如何保证消息的可靠传输(处理消息丢失) 2020面试必看
如何保证消息的可靠传输(处理消息丢失)?RabbitMQ生产者弄丢数据生产者将数据发送到RabbitMQ的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。此时可以选择用RabbitMQ提供的事务功能,就是生产者发送数据之前开启RabbitMQ事务channel.txSelect,然后发送消息,如果消息没有成功被RabbitMQ接收到,那么生产者会收到异常报错,此时就可以回滚事务channel.txRollback,然后重试发送消息;如果收到了消息,那么可以提交事务...原创 2020-06-12 10:08:59 · 165 阅读 · 0 评论 -
如何保证消息不被重复消费? 2020面试必看
回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。首先,RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是MQ自己保证的,是由我们开发来保证的。挑一个Kafka来举个例子,说说怎么重复消费吧。Kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表消息的序号,然后consumer消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的o...原创 2020-06-12 10:08:46 · 144 阅读 · 0 评论 -
如何保证消息队列的高可用? 2020面试必看
如何保证消息队列的高可用?RabbitMQ的高可用性RabbitMQ是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以RabbitMQ为例子讲解第一种MQ的高可用性怎么实现。RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。单机模式单机模式,就是Demo级别的,一般就是你本地启动了玩玩儿的普通集群模式(无高可用性)普通集群模式,意思就是在多台机器上启动多个RabbitMQ实例,每个机器启动一个。你创建的queue,只会放在一个...原创 2020-06-12 10:08:24 · 126 阅读 · 0 评论 -
为什么使用消息队列 2020面试必看
解耦看这么个场景。A系统发送数据到BCD三个系统,通过接口调用发送。如果E系统也要这个数据呢?那如果C系统现在不需要了呢?A系统负责人几乎崩溃......在这个场景中,A系统跟其它各种乱七八糟的系统严重耦合,A系统产生一条比较关键的数据,很多系统都需要A系统将这个数据发送过来。A系统要时时刻刻考虑BCDE四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!如果使用MQ,A系统产生一条数据,发送到MQ里面去,哪个系统需要数据自己去...原创 2020-06-12 10:07:48 · 139 阅读 · 0 评论