游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

2021最新版RabbitMQ面试题总结,每道题都很经典

  大家对RabbitMQ原理都应该有所了解,下面我们就来看一下关于RabbitMQ原理的面试题。1、为什么要引入MQ系统,直接读写数据库不行吗?
  其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么?
  先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰。解耦:多系统多进程的数据交换,用pubsub异步:把大数据量的同步处理改为异步削峰:一般的A系统使用MySQL,扛到每秒2k个请求就差不多了,如果每秒请求到5k的话,可能就直接把MySQL给打死了,导致系统崩溃,用户也就没法再使用系统了。如果使用MQ,每秒5k个请求写入MQ,A系统每秒钟最多处理2k个请求,因为MySQL每秒钟最多处理2k个。A系统从MQ中慢慢拉取请求,每秒钟就拉取2k个请求,不要超过自己每秒能处理的最大请求数量就ok,这样下来,哪怕是高峰期的时候,A系统也绝对不会挂掉,这又设计请求排队的问题。2、消息队列有什么优缺点?优点:
  解耦、异步、削峰缺点:
  系统可用性降低
  系统引入的外部依赖越多,越容易挂掉。
  系统复杂度提高
  一致性问题
  A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,这数据就不一致了。3、RabbitMQ的高可用性如何保证?
  RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式
  单机模式不存在高可用。
  普通集群模式也不存在高可用性,意思就是在多台机器上启动多个RabbitMQ实例,每个机器启动一个。但是你创建的queue,只会放在一个RabbitMQ实例上,但是每个实例都同步queue的元数据(元数据可以认为是queue的一些配置信息,通过元数据,可以找到queue所在实例)。你消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从queue所在实例上拉取数据过来。这种方式确实很麻烦,也不怎么好,没做到所谓的分布式,就是个普通集群。因为这导致你要么消费者每次随机连接一个实例然后拉取数据,要么固定连接那个queue所在实例消费数据,前者有数据拉取的开销,后者导致单实例性能瓶颈。而且如果那个放queue的实例宕机了,会导致接下来其他实例就无法从那个实例拉取,如果你开启了消息持久化,让RabbitMQ落地存储消息的话,消息不一定会丢,得等这个实例恢复了,然后才可以继续从这个queue拉取数据。
  镜像集群模式的策略是高可用策略,指定的时候可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建queue的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。4、如何解决消息队列的延时以及过期失效问题?
  其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢,造成消息堆积了,MQ存储快要爆了,甚至开始过期失效删除数据了。
  针对这个问题可以有事前、事中、事后三种处理事前:开发预警程序,监控最大的可堆积消息数,超过就发预警消息(比如短信),不要等出生产事故了再处理。事中:看看消费端是不是故障停止了,紧急重启。事后:需要对消费端紧急扩容,增加处理消费者进程,如扩充10倍处理,但其实这也有个问题,即数据库的吞吐是有限制的,如果是消费到数据库也是没办法巨量扩容的,所以还是要在吞吐能力支持下老老实实的泄洪消费。所以事前预防还是最重要的。否则出发删除过期数据,那就需要再重写生产消息的程序,重新产生消息。5、RabbitMQ如何保证不丢数据?
  需要考虑3个可能丢数据的地方:生产端、队列本身、消费端
  (1)生产端:开启事务(不推荐,太耗性能降低吞吐),推荐开启confirm模式,在生产者那里设置开启confirm模式之后,你每次写的消息都会分配一个唯一的id,然后如果写入了RabbitMQ中,RabbitMQ会给你回传一个ack消息,告诉你说这个消息ok了。如果RabbitMQ没能处理这个消息,会回调你的一个nack接口,告诉你这个消息接收失败,你可以重试。而且你可以结合这个机制自己在内存里维护每个消息id的状态,如果超过一定时间还没接收到这个消息的回调,那么你可以重发。
  (2)队列本身:就是RabbitMQ自己弄丢了数据,这个你必须开启RabbitMQ的持久化,就是消息写入之后会持久化到磁盘,哪怕是RabbitMQ自己挂了,恢复之后会自动读取之前存储的数据,一般数据不会丢。
  设置持久化有两个步骤:
  创建queue的时候将其设置为持久化,这样就可以保证RabbitMQ持久化queue的元数据,但是它是不会持久化queue里的数据的。
  第二个是发送消息的时候将消息的deliveryMode设置为2。就是将消息设置为持久化的,此时RabbitMQ就会将消息持久化到磁盘上去。
  (3)消费端:其实和kafka的原理很类似,kafka即手动提交offsize。用RabbitMQ提供的ack机制,简单来说,就是你必须关闭RabbitMQ的自动ack,通过自己的一个api来调用就行,然后每次你自己代码里确保处理完的时候,再在程序里ack。这样的话,如果你还没处理完,不就没有ack了?那RabbitMQ就认为你还没处理完,这个时候RabbitMQ会把这个消费分配给别的consumer去处理,消息是不会丢的。6、如何保证队列的消息不被重复消费?
  这个需要灵活作答,考察的是思考力,因为消费的场景有很多,有数据库、有缓存、有第三方接口
  (1)比如针对数据库,你拿到这个消息做数据库的insert操作。那就容易了,给这个消息做一个唯一主键(或者UUID),那么就算出现重复消费的情况,就会导致主键冲突,避免数据库出现脏数据。
  (2)再比如redis缓存,你拿到这个消息做redis的set的操作,那就容易了,不用解决,因为你无论set几次结果都是一样的,set操作本来就算幂等操作。
  (3)再比如第三方接口,需要确定两点,第三方接口程序是有去重能力的,那么脏一点直接丢数据过去,如果没有去重能力,还是需要我们来写程序去重,就是第2点的办法。7、集群节点类型都有什么?
  节点的存储类型分为两种:磁盘节点内存节点
  磁盘节点就是配置信息和元信息存储在磁盘上,内存节点把这些信息存储在内存中,当然内次节点的性能是大大超越磁盘节点的。
  单节点系统必须是磁盘节点,否则每次你重启RabbitMQ之后所有的系统配置信息都会丢失。
  RabbitMQ要求集群中至少有一个磁盘节点,当节点加入和离开集群时,必须通知磁盘节点。
  以上就是整理的RabbitMQ常见的面试题,这7道RabbitMQ面试题是必学的内容。如果对以上内容掌握的还不是很全面,或者知识有所欠缺,可以跟着动力节点的RabbitMQ视频教程来学习更多关于Dubbo框架的知识。RabbitMQ实战视频教程
  https:www。bilibili。comvideoBV1Ap4y1D7tURabbitMQ教程配套资料下载
  http:www。bjpowernode。com?toutiao

iphone手机怎么连接家里的电视?下面我介绍手机与电视机连接的方法,连接之后,手机上的一切操作都可以在电视机的屏幕上看。准备工作:如果电视机是智能电视机,那么在电视机上安装一个名叫乐播投屏的软件,其……今日数据精选科兴疫苗通过世卫紧急使用认证中国挖掘机首夺全球销6月2日数据精选东南亚国家疫情恶化,越南多家芯片工厂停工东南亚是全球主要的半导体芯片封装和测试中心,日前,越南、马来西亚等国疫情形势恶化,极有可能加剧全球芯片短缺问……老年人的下一部手机,何必再是老年机?最近一条新闻:郑州的72岁吕大爷连续四年开网课教老年人用智能手机,为了方便大家记忆,吕大爷还编辑制作了360页智能手机图文教程,内容涵盖了网购、移动支付、微信聊天等诸多方面,他……小米新机被曝光,知名博主表示很惊讶蚕豆一直都是一个地地道道的小米粉丝,手持无数个小米手机,算一下差不多56个吧,所以每次看到小米新机发布或者被曝光,心中都表示一种很震惊的感觉,而今天更是在科技网站看到这则消息的……中兴手机!还在用吗?今天上午帮朋友更换一台中兴曲面屏手机手机背面图什么型号记不得了,她自己把屏幕摔坏,自己买的屏幕总成,花了二百多,说实话还是挺便宜的曲面屏。把手机和屏幕放到一起……银行不喜欢支付宝,为什么支付宝还可以从银行的卡上转钱?大家好!我是空谷寒潭。银行虽然不喜欢支付宝,但是它要遵守国家法律和支付结算制度。首先,存、取款自由是《储蓄管理条例》赋予银行卡持有人的权利,银行不得拒绝。从个人支付……5元月租卡都有哪些,电信联通都有,移动嘛随时移动互联网的发展,加之双卡双待手机盛行,运营商的极力推广,大多数网友或多或少有两张或两张以上的电话卡,那么月租5元的套餐卡都有哪些?联通:星粉卡。。。。。。。。……IntelArc显卡完全解密双雄争霸变三足鼎立,等等党的新选从去年年底开始,购买显卡对于大多数人来说就变成了一个艰难的选择。加密货币的价格狂涨,加上全球芯片缺货,使得AMD和NVIDIA新一代显卡一直处于疯狂溢价以及紧缺的状态。如果说N……焦点分析从加州别墅到江苏工厂,隆基和特斯拉盯上太阳能屋顶作者袁斯来编辑苏建勋当特斯拉汽车吸引绝大多数目光时,它在2016年收购的光伏发电公司SolarCity却显得有些黯然。马斯克曾经对它寄以厚望,几年前,他以惯常……5700亿家电巨头二次造车,这次学华为,要做汽车零部件供应商2021年,跨界造车不再是什么新鲜事。小米、OPPO等手机巨头,滴滴出行、货拉拉等互联网公司纷纷下场。在这场浪潮中,家电企业也不甘落后,前有创维举行智能汽车品牌见面会,发布了创……华为Watch3原型机流出,鸿蒙OSeSIM和微信支付,卓越备受期待的华为新品发布会将于6月2日举行,除了自主研发的鸿蒙系统之外,华为Watch3无疑将是另外一个关注的焦点。一张据说是华为Watch3原型机的照片引起了广泛关注,让我们先……创意水壶式设计,传递震撼低音,好听又好看音乐带来好心情,但前提得有个好音响,维尔晶新品D6,创意水壶式设计,传递震撼低音,好听又好看维尔晶蓝牙音响外观青春个性张扬WKing维尔晶D6类似水杯的外观设……
联想多款笔记本电脑新品发布联想多款笔记本电脑新品曝光1、联想ThinkBook:联想ThinkBook是联想的基本商务笔记本电脑系列,搭载英特尔处理器,电源按钮集成指纹传感器,还将会配备Wi……华为大佬推荐的Python70个项目,带你成为Python大今天给你们带来了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,也可以从中寻找灵感去做自己的项目还有400套电子书视频……杭兴智能感应提醒设备荣获外观设计专利证书近日,杭兴智能感应提醒设备(HXAP006)经国家知识产权局认定,获得外观设计专利证书,专利号:ZL202130142079。2,并在专利登记薄予以登记。这次外观设计专利……AGMM6体验实用三防,功能机新典范了解过AGM手机的小伙伴们,应该都知道,AGM是做三防手机起家的,AGM手机曾在电影战狼中露面,吴京在极寒的条件下使用AGM进行视频通话,从侧面也反映出了品牌的风格调性,充分考……蔚来汽车黑鹰坠落本报记者盛兰张家振上海报道高速测试蔚来领航辅助系统(NOP),全程无接管,这样的表现你打几分?7月25日,某资深汽车评论员发布了一条蔚来ES8测评视频,并邀请观众打分;而……5G将给行业和社会带来什么?这是个正经问题,但是由于资本推动社会的大环境,始终没有人从技术层面认真讨论这个问题,而是更热衷于演义到经济层面去天马行空,总之,能吸引资金的说法更适合讨论。于是,那个就成为未来……现在视频制作这么火,网上各种培训课程满天飞,靠谱吗?答:培训班讲的都是些理论知识,单从理论上来说,他们讲的这些,拍视频知识,还是靠谱的。我们知道,要想拍岀一块好视频来,难度是很大很大的,它类似于拍影视剧,灯光,音响,导演,……常用linux命令ncnc是netcat的简写,常用参数:1)l指定nc将处于侦听模式。意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接2)pport指定端口3)s指定发送数据的……国家移民管理局首届科技创新应用大赛获奖情况揭晓中国青年报客户端讯(中青报中青网记者何春中)近日,国家移民管理局首届科技创新应用大赛获奖情况揭晓。港口通微信小程序等5个项目荣获一等奖,空地一体化应急通信保障体系等10个项目荣……从30万到5000万,前置摄像头看似强了,实际上已被弱化了你有多久没有打开过前置摄像头了呢?我想很多人每天都会打开,使用的频率甚至比后置摄像头还多,用来视频通话、自拍、直播、会议等。但你知道,手机厂商们是在什么时候开始重视手机前……负载均衡器技术Nginx和F5的优缺点对比这是网上摘抄的文章,正好想了解一下负载均衡,看这篇文章写的比较易懂,就对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据……简单分析Flask数据库迁移详情本文给大家分享的是Flask数据库迁移详情,db。createall()不会重新创建表或是更新表,需要先使用db。dropall()删除数据库中所有的表之后再调用db。crea……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网