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

Java高频面试题每日三连问?Day8消息队列篇

  作者浩说编程
  来源公众号:浩说编程
  〔大厂技术资源研发必备安装包经典必读电子书限时免费获取〕
  问题导读
  一、说说你对消息队列的理解,消息队列为了解决什么问题?
  二、消息队列有什么优缺点?
  三、说一下RabbitMQ有哪些工作模式?
  一、说说你对消息队列的理解,消息队列为了解决什么问题?正经回答:
  我们公司业务系统一开始体量较小,很多组件都是单机版就足够,后来随着用户量逐渐扩大,我们程序也采用了微服务的设计思想。
  把很多服务进行了拆分,但后来在一些秒杀抢票活动或高频业务中,服务依旧扛不住大量QPS,因此我们引入了消息队列来优化该类问题。
  消息队列应用的场景大致分为三类:解耦、异步、削峰。
  解耦
  消息队列类似设计模式中的观察者模式(Observer)或发布订阅模式(PubSub)。生产者生成和发送消息到消息队列,消费者从消息队列中取走消息进行处理,称为消费,使用消息队列将生产者和消费者之间的操作关联解耦,易于扩展。
  比如系统A为支付系统,一开始用户支付完调用日志记录系统B记录就完了,后来内容越来越多,支付完成要调用加积分系统C、短信通知系统D、优惠券系统E等等
  这个场景中,A系统跟其它各种乱七八糟的系统严重耦合,A系统产生一条支付成功的数据,很多系统接口都需要A系统调用把支付成功的数据发送过去。A系统程序员要时刻考虑这些问题:其他系统如果挂了该咋办?是不是直接程序抛异常了?一天到晚加业务,每次都重新部署?领导是不是狗?
  那如果引入MQ,A系统产生一条数据,发送到MQ里面去,每个子系统加上对消息队列中支付成功消息的订阅,持续监听就可以了,哪个系统需要数据自己去MQ里面消费。如果新系统需要数据,直接从MQ里消费即可;如果某个系统不需要这条数据了,就取消对MQ消息的消费即可。
  这样下来,A系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况,我只负责把支付成功的信息放到MQ里就行了,至于能否正常加积分、能否正常短信通知,管我鸟事!可见,通过一个MQ,PubSub发布订阅消息这么一个模型,A系统就跟其它系统彻底解耦了。
  面试官:哦,那我听出来了,你这是喜欢甩锅啊!来,简历还你。
  我:额不,我开玩笑的,当然不能这样做,这里其实涉及到MQ在分布式事务中数据一致性的问题;听我跟您解释。
  数据一致性
  这个其实是分布式服务本身就存在的一个问题,不仅仅是消息队列的问题,但是放在这里说是因为用了消息队列这个问题会更明显。
  就像咱们上面说的,你支付成功的服务自己保证自己的逻辑成功处理了,你成功发了消息,但是短信系统,积分系统等等这么多系统,他们成功还是失败你就不管了?当然不行,这样坑队友的行为,狄大人都帮不了你
  怎么办?那就把所有的服务都放到一个事务里,所有都成功成功才能算这一次下单是成功的,要成功一起成功,要失败一起失败。
  异步
  A系统接收一个请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3ms,BCD三个系统分别写库要300ms、400ms、200ms。最终请求总延时是3300400200903ms,接近1秒,用户感觉搞个毛线?慢的一批。
  一般互联网类的企业,对于用户直接的操作,一般要求是每个请求都必须在200ms以内完成,对用户几乎是无感知的,如果1秒足以说明该系统不可用,垃圾系统。
  如果这里使用了消息队列,那么A系统连续发送3条消息到MQ队列中,假如耗时5ms,A系统从接受一个请求到返回响应给用户,总时长是358ms,对于用户而言,其实感觉上就是点个按钮,8ms以后就直接返回了,体验感很好
  削峰
  比如我们系统有代售抢票业务,平时每天QPS也就50左右,A系统风平浪静。结果每次一到春运抢票,每秒并发请求数量突然会暴增到10000以上。但是系统是直接基于MySQL的,大量的请求直接打到MySQL,比如一般MySQL能抗2000条请求,现在每秒10000条SQL,可能就直接把MySQL给打死了,导致系统崩溃。但是高峰期一过就又没人了,QPS回到50,对整个系统几乎没有任何的压力。
  如果这里使用MQ,每秒1w个请求写入MQ,A系统每秒钟最多处理2000个请求,因为MySQL每秒钟最多处理2k个。A系统从MQ中慢慢拉取请求,每秒钟就拉取2k个请求,不要超过自己每秒能处理的最大请求数量就ok了,这样下来,哪怕是高峰期的时候,A系统也不会挂掉。当然了,用户的响应时间肯定会受影响,毕竟秒杀嘛,只要把前多少条请求处理好,其余的抢票失败就行了。
  另外,MQ每秒钟1w个请求进来,只处理2k个请求出去,结果会导致在中午高峰期,可能有几十万甚至几百万的请求积压在MQ中。
  这个短暂的高峰期积压是ok的,因为高峰期过了之后,每秒钟就50个请求进MQ,但是A系统依然会按照每秒2k个请求的速度在处理。所以说,只要高峰期一过,A系统就会快速将积压的消息给消费掉。
  二、消息队列有什么优缺点?正经回答:
  优点上面已经说了,就是在特殊场景下有其对应的好处,解耦、异步、削峰。
  缺点有以下几个:
  系统可用性降低
  本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低;
  系统复杂度提高
  加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。
  因此,需要考虑的东西更多,复杂性增大。
  一致性问题
  A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,咋整?你这数据就不一致了。
  所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,做好之后,你会发现,妈呀,系统复杂度提升了一个数量级,也许是复杂了10倍。但是关键时刻,用,还是得用的。
  三、说一下RabbitMQ有哪些工作模式?正经回答:
  一。simple模式(即最简单的收发模式)
  1。消息产生消息,将消息放入队列
  2。消息的消费者(consumer)监听消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失,这里可以设置成手动的ack,但如果设置成手动ack,处理完后要及时发送ack消息给队列,否则会造成内存溢出)。
  二。work工作模式(资源的竞争)
  1。消息产生者将消息放入队列消费者可以有多个,消费者1,消费者2同时监听同一个队列,消息被消费。C1C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患:高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关(syncronize)保证一条消息只能被一个消费者使用)。
  三。publishsubscribe发布订阅(共享资源)
  1、每个消费者监听自己的队列;
  2、生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。
  四。routing路由模式
  1。消息生产者将消息发送给交换机按照路由判断,路由是字符串(info)当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;
  2。根据业务功能定义路由字符串
  3。从系统的代码逻辑中获取对应的功能字符串,将消息任务扔到对应的队列中。
  4。业务场景:error通知;EXCEPTION;错误通知的功能;传统意义的错误通知;客户通知;利用key路由,可以将程序中的错误封装成消息传入到消息队列中,开发者可以自定义消费者,实时接收错误;
  五。topic主题模式(路由模式的一种)
  1。星号井号代表通配符
  2。星号代表多个单词,井号代表一个单词
  3。路由功能添加模糊匹配
  4。消息产生者产生消息,把消息交给交换机
  5。交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费
  (在我的理解看来就是routing查询的一种模糊匹配,就类似sql的模糊查询方式)
  每日小结今天我们复习了面试中常考的消息队列三个问题,你做到心中有数了么?1
  对了,如果你的朋友也在准备面试,请将这个系列扔给他,如果他认真对待,肯定会感谢你的!!好了,今天就到这里,学废了的同学,记得三连,也会给我继续更新的动力。1
  另外,我在同名公众号中为大家准备了〔大厂技术资源研发必备安装包经典必读电子书限时免费获取〕
  欢迎来撩!

降噪耳机不支持通话降噪?降噪耳机,顾名思义,应该是在使用耳机听音乐、接听电话等过程中,能够有效降低噪音干扰,给人一个安静舒适的收听环境。实际情况却并非如此。近期,四川消费网接到投诉咨询,消费者反映花费……新能源行业未来的发展前景如何?根据国家颁布的各地新能源推动政策及蓝天保卫战等大方针:新能源应用作为碳中和的重要举措,是改善尾气污染,改善环境的重要一环。未来的城市里,大概515年,所有的城市物流用车基……为什么美国5G毫米波方案会宣告破产?高带宽、低延时是毫米波的优点,同时毫米波也存在易遮挡、容易被自然环境干扰(雨、雪、雾,甚至雾霾、树叶、灌木丛等,都能对信号的传播造成影响)的缺点。将毫米波应用在手机至少当……新东方真的给学生老师退款了吗?退了呀!坐标北京海淀,退的很痛快,按照合同要求在时间范围内退回原账户。在新东方学了近三年,一直很舒心,遇到问题解决很快,老师的教学质量杠杠的,如果不是双减,我会坚持学下去……网络直播用什么声卡好,有没有推荐的?如果用手机直播,有的时候勇哥无线小蜜蜂就行,但是如果想要提高音质,或者使用更多的音效,那么就需要比较专业的直播声卡了。我发现机器不少直播间,声音主播都在换用索爱S8直播专……智能大白敬业爱岗全自动工作的金牌咖啡师、轻松爬坡越障的安防巡检员、可自动拨电话乘电梯的配送服务员在北京冬残奥会上,这些曾服务于冬奥会的机器人继续上岗,提供全方位智能化的暖心服务。磨粉、闷……ubuntu防止ssh超时ubuntu防止ssh超时vimetcsshsshdconfig末尾加入:TCPKeepAliveyesClientAliveInterval60ClientAli……华为手机值得买吗?华为的高端旗舰系列的手机是十分值得推荐购买的,但是中低端的手机一般都是有比较大的删减,总是有着巨大的短板,既没有比较好的配置,也没有流畅的系统操作体验,所以中端机型诸如nova……为什么有的地方可以试听耳内机,有的地方不可以呢?有一款耳内机是标准大众型的,款式精致漂亮,只要使用者佩戴条件合适,效果当场就可以确定的,试好后就可以立即佩戴回家,不用先试听耳背机,再去定做耳膜后到厂家制作,还要回来反复试听的……谈谈C语言中的结束符EOF计算机中检测文件结尾方法的一种方法:在文件的末尾放特殊的字符标记结尾。在C语言中,使用getchar()读取文件,检测到末尾时会返回一个特殊值,即返回EOF。使用s……苹果手机在哪里买比较好?前不久听到有人讨论二手的话题,并且有一种不正之风在喷买二手就是因为穷。通过某闲置交易平台数据了解,该app上线一年,累计成交额破了100亿,每天会有10万笔成功交易,其中作为大……什么是COP15?COP15大会为什么在云南昆明召开?《生物多样性公约》第十五次缔约方大会(简称:COP15),是联合国首次以生态文明为主题召开的全球性会议。大会以生态文明:共建地球生命共同体为主题,旨在倡导推进全球生态文明建设,……
21克拉首场路演海上浪漫开启郭京飞迪丽热巴首度合作获赞笑泪动邮轮、情侣、对戒、海上party。郭京飞、迪丽热巴主演的电影《21克拉》于清明小长假举行星梦邮轮世界梦号21克拉之旅,21对情侣一同经历了一段难忘的海上之旅,而在首场公开观影结……猛虫过江海报很黄很暴力小沈阳携大潘刀逼刀闯台湾由星皓影业出品的黑帮动作喜剧《猛虫过江》即将于暑期登陆全国院线。片方近日发布了充满刀光剑影的黄底刀逼刀版海报,在片中饰演一名东北小人物笑闯台湾的小沈阳面对战斗值无限的神将,拉开……紧急救援将拍林超贤再牵手大胸肌彭于晏截止发稿日,由林超贤执导电影《红海行动》票房已达到36。3亿,荣登影史春节档票房总冠军。香港票房也频传捷报,超越前作《湄公河行动》,继续挑战新高峰。林超贤于8日在香港出席……张艺上深夜食堂遇爱追梦甘苦人生体味治愈之味星关系8月12日讯由影帝梁家辉首执导筒,梁家辉、刘涛共同领衔主演,杨祐宁、魏晨、郑欣宜、张艺上等联袂主演的电影《深夜食堂》将于8月30日全国公映,近日片方发布了遇见美好倒计时2……消暑神器爆笑满分!8月最好笑的电影非他莫属风靡全球的小鸟们回来了!电影《愤怒的小鸟2》即将在8月16日全国上映!《愤怒的小鸟》系列游戏在过去十年间全球下载量超过40亿次,创下最短时间内1亿下载量的吉尼斯纪录,单日最高下……罗小黑战记温暖中秋晚安喵MV高萌来袭星关系8月12日讯今日,由中国大陆独立动画制作人MTJJ及其工作室精心打造的动画电影《罗小黑战记》发布高萌推广曲《晚安喵》MV,治愈力十足的罗小黑出场,配合全新改编的暖萌歌曲《……佩戴助听器后听力会变好吗?助听器的基本原理是辅助听力障碍者听到声音:将原来听不到的声音通过放大,达到有耳聋症状的患者能够听到的分贝。助听器本身并不能从病因上治愈耳聋。听力损失的类型分为传导性听力损失、感……大多数时候手机完败相机,包括微单!小米11uitra自用深度一个空间规划师自用小米11uitra一个月后的深度测评。人生第一部智能手机是ipone4,说实话当时已经被ipone那时还只有500万像素的拍照所折服了。成像素质,拍摄便……烈火英雄发布消防员家属特辑黄晓明为电影献声MV播放量过亿星关系8月8日讯7日,电影《烈火英雄》发布全新特辑视频,视频中消防员家属们面对镜头袒露自己的心声,感人至深,获得共青团中央、光明网、观察者网、公益时报、人民网及数十家公益机构转……罗小黑亮相2019ChinaJoy高萌互动引追捧星关系8月5日讯近日,中国国际数码互动娱乐展览会ChinaJoy正在上海火热举办,全国各地的动漫爱好者齐聚这次盛会。将于9月12日上映的国产动画电影《罗小黑战记》主角罗小黑也惊……黄晓明烈火英雄被赞毁容式演技献唱推广曲获百位明星转发支持星关系8月2日讯由黄晓明主演的电影《烈火英雄》于8月1日全国上映后,票房迅速突破2亿大关,口碑也一路飘高,黄晓明饰演的江立伟更是受到广大观众和影迷的称赞黄晓明这是毁容式演技,我……冰雪女王4魔镜世界获赞暑期亲子观影最佳之选由安徒生童话改编的系列影片《冰雪女王4:魔镜世界》将于8月2日正式上映,影片今日在奥斯卡新建文影城举办了首映观影活动。凭借梦幻清凉的画风,美轮美奂的场景,惊险刺激的情节,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网