关于java:消息队列与快递柜之间的奇妙关系

30次阅读

共计 1682 个字符,预计需要花费 5 分钟才能阅读完成。

提到音讯队列可能一些敌人常常听他人说起一些名词,比方:服务程序解耦,解决流量削峰,通过异步解决晋升用户体验,缓冲批处理进步解决性能。笔者擅于文言讲解,所以我就不必业余的术语去解释业余的问题了。我始终感觉音讯队列的性能和快递柜的性能十分类似,怎么个类似法呢?让我来具体给你说说。

一、文言音讯队列

咱们来将快递柜与音讯队列做一个比照

  • 音讯队列比作快递柜:有很多厂家生产快递柜,如:丰巢(apache kafka),速递易(alibaba RocketMQ),近邻宝(ActiveMQ)等等,反正罕用的就这几个。快递柜负责长期保留邮件,音讯队列负责长期保留音讯数据。
  • 快递员比作音讯生产者:快递员负责向快递柜投递邮件,生产者负责向音讯队列投递音讯。殊途同归之妙啊!
  • 消费者比作音讯消费者:可能是这个例子太贴切了,以至于这句怎么看都是废话。废话也还是要说,生存中的消费者取邮件,程序中的消费者取音讯数据。

二、快递柜 (音讯队列) 带来的益处

咱们先回顾一下在 没有快递柜的日子里是怎么度过的:某天早上忽然接到快递员电话:” 兄弟,有你的快递啊 ”。心里想真糟糕:“你早不来晚不来,我马上就要下班了,你这个时候来。好吧,我等你一会”。后果有可能快递员很不靠谱,一会说堵车,一会说马上到,等来等去你下班早退了。这种状况让你很解体!

忽然有一天,小区里忽然呈现了一个叫做快递柜的货色,这货色好啊。” 兄弟,有你快递啊 ”,心想谁是你兄弟:” 啊,你放快递柜外面吧,我早晨上班回来取 ”。快递员欢快的把快递放入快递柜,开始打下一个电话,一早上 10 个邮件。如果每个都送上门快递员起码要半小时。当初好了,9 个放快递柜,1 个用户要求送上门,10 分钟就搞定了。快递员感觉这个东东真的很好!

快递员快乐了,消费者用户其实也很称心,有的购物狂一天有可能收 10 来个邮件。没有快递柜的时候,快递员来一个电话就去取一次(等一次)快递。有了快递柜,上班的时候就一起全都取了。下面的例子,体现了音讯队列 (快递柜) 的几个优越性,请读者认真品评:

  • 异步解耦:有了快递柜,消费者不必期待快递员,用户体验加强。消费者与生产者 (快递员) 之间解耦,不会因为对方的操作行为,影响本人独立处事的程序。用户不必疲于期待与接管事件阻塞耗时。
  • 流量削峰:咱们假设一种极其的状况,你通过各个渠道买了 1000 本书,忽然某一小时集中的给你打电话。你必定不具备一个小时收 1000 个邮件的能力,所以你让快递员将邮件放入快递柜。所以你就能够依照本人的解决能力,依照本人的工夫安顿去取邮件。同样咱们的消费者程序在面临多用户、高并发的申请状况下,将数据放入音讯队列保留能够将流量数据削峰,依照程序可能解决的能力和资源进行数据生产。
  • 缓冲批处理:生产者批量投递,爽!消费者一次性取多个邮件,爽!

三、引入快递柜带来的毛病

说了这么多的长处,那么快递柜有没有毛病呢?当然有

  1. 引入复杂度。毫无疑问,快递柜 (音讯队列) 这货色是多进去的,在原来的收取过程中是不存在的。所以须要中央放它,还须要防火、防盗防潮,须要去保护它。音讯队列中间件也是一样的,你须要服务器区装置它,还要对它进行保护。
  2. 会导致临时的数据不统一。如果没有快递柜,你收到了邮件件就是真的收到了。然而应用快递柜之后,你收到了 ” 邮件放入快递柜的音讯 ”,然而与你真的取到邮件这两头会有肯定的延时。当然你最终还是会取到邮件,抉择 ” 音讯队列 ” 快递柜,就是要忍耐临时不统一,承受 ” 最终一致性 ”。
  3. 当然极其状况下,快递柜坏了,你要不可避免地承受 ” 邮件可能会失落 ” 的事实,对于安保系数高的小区这简直不会产生。

    欢送关注我的博客,更多精品常识合集

    本文转载注明出处(必须带连贯,不能只转文字):字母哥博客 – zimug.com

感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。

  • 《kafka 修炼之道》
  • 《手摸手教你学 Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2 一本通》
  • 《实战前后端拆散 RBAC 权限管理系统》
  • 《实战 SpringCloud 微服务从青铜到王者》
正文完
 0