加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

面试官问你什么是消息队列?把这篇甩给他!

发布时间:2019-04-17 07:09:52 所属栏目:建站 来源:Java3y
导读:一、什么是动静行列? 动静行列不知道各人看到这个词的时辰,会不会认为它是一个较量高端的技能,横竖我是认为它仿佛是挺牛逼的。 动静行列,一样平常我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。 我们先不管动静(Message)这个词,来看看行列(Que

体系A执行完了往后,将userId写到动静行列中,然后就直接返回了(至于其他的操纵,则异步处理赏罚)。

  •  原来整个哀求必要用950ms(同步)
  •  此刻将挪用其他体系接口异步化,从哀求到返回只必要100ms(异步)

(例子也许举得不太好,但我认为声名到点子上就行了,留情。)

2.3削峰/限流

我们再来一个场景,此刻我们每个月要搞一次大促,大促时代的并发也许会很高的,好比每秒3000个哀求。假设我们此刻有两台呆板处理赏罚哀求,而且每台呆板只能每次处理赏罚1000个哀求。

那多出来的1000个哀求,也许就把我们整个体系给搞崩了…以是,有一种步伐,我们可以写到动静行列中:

体系B和体系C按照本身的可以或许处理赏罚的哀求数去动静行列中拿数据,这样即便有每秒有8000个哀求,那只是把哀求放在动静行列中,去拿动静行列的动静由体系本身去节制,这样就不会把整个体系给搞崩。

三、行使动静行列有什么题目?

颠末我们上面的场景,我们已经可以发明,动静行列能做的事其拭魅照旧蛮多的。

说到这里,我们先回到文章的开头,"显着JDK已经有不少的行列实现了,我们还必要动静行列中间件呢?"着实很简朴,JDK实现的行列种类固然有许多种,可是都是简朴的内存行列。为什么我说JDK是简朴的内存行列呢?下面我们来看看要实现动静行列(中间件)也许要思量什么题目。

3.1高可用

无论是我们行使动静行列来做解耦、异步照旧削峰,动静行列必定不能是单机的。试着想一下,假如是单机的动静行列,万一这台呆板挂了,那我们整个体系险些就是不行用了。

以是,当我们项目中行使动静行列,都是得集群/漫衍式的。要做集群/漫衍式就肯定但愿该动静行列可以或许提供现成的支持,而不是本身写代码手动去实现。

3.2 数据丢失题目

我们将数据写到动静行列上,体系B和C还没来得及打动静行列的数据,就挂掉了。假如没有做任何的法子,我们的数据就丢了。

学过Redis的都知道,Redis可以将数据耐久化磁盘上,万一Redis挂了,还能从磁盘从将数据规复过来。同样地,动静行列中的数据也必要存在此外处所,这样才尽也许镌汰数据的丢失。

那存在哪呢?

  •  磁盘?
  •  数据库?
  •  Redis?
  •  漫衍式文件体系?

同步存储照旧异步存储?

3.3斲丧者怎么获得动静行列的数据?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读