博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消息队列
阅读量:4958 次
发布时间:2019-06-12

本文共 966 字,大约阅读时间需要 3 分钟。

  最近几年,团购、秒杀等购物应用异常火爆,既然购物,就涉及数据库操作。那么这么大的冰法是怎么处理的?不会吧数据库搞垮吗?答案是肯定的。一个解决办法就是把HTTP请求放入内存中的高速队列,然后对队列里的数据按一定的规则进行分流处理,这就是HTTP请求队列。

  比如,微博和SNS通常拥有上亿的受众数量,一个明星或者公众人物可能有几千万粉丝,如果一个公众物发了一条微博,那么就得推送到所有关注者那里(有推策略、拉策略、随机策略、优先策略等),这时就必须用到队列了。

  随着网站用户数量的增加,若在前端页面直接写入大量数据,会延长用户的等待时间,在多并发的情况下,页面效率低、压力集中。为了解决上述问题,考虑使用数据的异步处理。而消息队列背后实质就是一种“异步处理”的思想。

 

1、队列(queue)和栈一样,是一种线性表结构,不过队列是一种先进先出(FIFO)的数据结构。队列只允许在后端进行插入操作,在前端进行删除操作。

2、我们发微博时,其实我们可以注意到,好友动态本身不必具有十分高的实时要求。所以,我们采用异步的推,把动态推给好友,而不是好友主动拉取。

3、“消息队列”的原理:

    ”消息队列“是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人的角色。队列主要提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留信息,直到成功传递。利用消息队列可以很好地异步处理数据传送和存储,当频繁地向数据库插入数据时,就可采用消息队列异步插入。另外,可将比较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如视频转发、发送手机短信等。

      注意:在队列中存储的是消息,而不是实际要分发和处理的数据。秒杀队列中存储的仅仅是一个HTTP请求,SNS队列中存数的仅仅是一个制造出来的动态,而不是所有要分发的动态。动态的分发不是消息队列所负责,其由另一个程序处理

4、消息队列需要一个轮询调度的程序,通过定制的调度把原先一瞬间可能发送的成千上万动态分发插入的操作延迟,并且是定制分发量,把高峰期的负载分一部分到低谷时间进行处理,这样能减少很多负担。  

 

转载于:https://www.cnblogs.com/it-cen/p/4251831.html

你可能感兴趣的文章
关于this和base
查看>>
(转)Scrapy 深入一点点
查看>>
荧光激活细胞分选( FACS)
查看>>
传球游戏
查看>>
如何组建和管理测试团队
查看>>
理论相关概念原理
查看>>
本地存储
查看>>
MP3的播放与停止
查看>>
两个周末,两个湖
查看>>
开发环境搭建
查看>>
入门GTD时间管理系统必读
查看>>
Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
随笔 javascript-抽象工厂模式
查看>>
机器学习----人脸对齐的算法-ASM.AAM..CLM.SDM
查看>>
Android项目的目录结构
查看>>
spring-cloud服务器雪崩效应
查看>>
C++中“引用”的底层实现
查看>>
ZOJ 1602. Multiplication Puzzle (DP)
查看>>