什么是消息队列?消息队列有什么用?———全方面解析消息队列的核心作用

导读:

           前段时间深入学习了消息队列,分布式系统等等,发现消息队列是相当重要的一个环节,如果我们说客户端和服务端之间存在中间件的管理(ActiveMQ的作用),让我们能够很自然的去实现发布订阅消息,能够实现微服务功能,这些都是一些很重要的环节。当我们使用某些软件的时候,总是存在一些的推送消息,那么这些消息怎么能够准确的推送到每一个用户上,而且是一个什么原理呢?如果你看了这边文章,恭喜你,你将获得网上没有的核心知识点。接下来,待我慢慢讲。。


一、消息队列的核心作用

           如果说,现在计算机的发展都是从非智能化变得智能化,让人类使用得越来越得心应手,涉及的方面也越来越广,此时此刻,现代的社会科技可以说给世界的格局一个质的变化。所以说,现在的计算机都是为了时代的发展的话,我们现在所使用的所有软件和工具都可以总结出一件最核心的话语:服务人类。那么消息队列属于那种范围呢?

          高并发。

          举个例子:我们都用过微博,当一条爆炸性新闻发布的时候,往往是给服务器一个巨大的冲击力,此时此刻负载均衡就显得非常的脆弱,我们不能够去强求继续加服务器去缓解巨大的高并发压力,这样的成本往往是公司所不能承受得住的。如果说一年中只有今天是高并发的出现,那么即便有能力去加服务器承载这部分压力的公司,也会认为相当的浪费钱。总而言之,满足所有客户的请求在那一秒钟不一定能成为现实,那么我们在开放最大线程数的时候,可以让部分客户等待,当处在线程占有的客户请求撤销时,让线程服务下一个客户,其他没有被服务的客户暂时等待中,等待空闲的线程去获取客户对应的锁(对象锁)。

          同样,消息队列也可以说类似这样。我们做一个即时通讯,一个简单的聊天系统,我向服务端发送消息(发布者),服务端接收到消息就会将消息存在消息队列中,此时另一个接收我消息的人(订阅者),将请求服务端,打开服务端的时候,这些消息就会一个一个的从消息队列中取出,打印在他的聊天框中。这个原理很简单,就像是“一存一取”的做法,数据库常用的做法,只是这个是消息队列罢了。那么为什么说消息队列常用在高并发呢?上面都说过了,其实很简单,就是因为请求量过大,导致服务器短期内承载不了这么多请求,把一部分请求放到了消息队列中,让这个容器一直都充当一个存储器一样的效果,等着“CPU”释放一部分的空间再往里源源不断的输送数据,直到所有的请求都完毕为止。

                     

              如上图所示,客户的请求都放在了队列中,然后等待线程的持有。实际上,就像是线程池的概念,每一个线程都应该受到管理,无用的线程可以被回收销毁,如果是多请求则需要开辟更多的线程去运行等等。

                                        

               线程会持有一个对象锁跟一个对象进行绑定,此时这个对象就占有这个线程。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值