用户请求队列化_高性能网站实用技巧之消息队列篇

news/2024/5/12 4:15:27/文章来源:https://blog.csdn.net/weixin_30837611/article/details/112579866

f3aa228176b9e15c3440d1f8aa018287.png

什么是消息队列

fc60bec85c138e70a25d021490a2ca2c.png

消息队列Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。进程或者线程之间通过 消息 进行通信,消息发送后可以立即返回,由消息系统来确保信息的可靠传递,消息发布者(生产者)只管把消息发布到消息队里中而不用管谁来消费,消息使用者(消费者)只管从消息队列中获取消息以进一步处理而不用管理谁发布的消息,这样发布者和使用者都不用知道对方的存在。

消息Message)是指在应用之间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以很复杂,如嵌入对象。

消息队列的特点

通过提供 消息传递消息排队 模型,它可以在 分布式环境 下提供 应用解耦弹性伸缩冗余存储流量削峰异步通信数据同步 等等功能,其作为 分布式系统架构 中的一个重要组件,有着举足轻重的地位。消息队列主要特点有:

  • 异步性:将耗时的同步操作,通过以发送消息的方式,进行了异步化处理。减少了同步等待的时间。
  • 松耦合:消息队列减少了服务之间的耦合性,不同的服务可以通过消息队列进行通信,而不用关心彼此的实现细节,只要定义好消息的格式就行
  • 分布式:通过对消费者的横向扩展,降低了消息队列阻塞的风险,以及单个消费者产生单点故障的可能性。
  • 可靠性:消息队列一般会把接收的消息存储到本地硬盘上(当消息被处理完之后,存储信息根据不同的消息队列实现,有可能将其删除),这样即使应用挂掉或者消息队列本身挂掉,消息也能够重新加载。

消息队列应用场景

异步处理

同步处理 是指从请求的发起一直到最终的处理完成期间,请求的调用方一直在同步阻塞等待调用的处理完成。

异步处理 处理是指在请求发起的处理过程中,客户端的代码已经返回了,它可以继续进行自己的后续操作,而不需要等待调用处理完成。

对一些比较耗时且不需要即时(同步)返回操作结果的操作,可以把处理过程通过消息队列进行异步处理。这样做可以推迟耗时操作的处理,使耗时操作异步化,而不必阻塞客户端程序,客户端的程序在得到处理结果之前可以继续执行,从而提高客户端程序的处理性能。

异步处理的主要目的是 减少请求响应时间,实现非核心流程异步化,提高系统响应性能。

应用解耦

使用消息队列,可以有多个生产者发布消息,多个消费者消费消息,共同完成整个的业务处理逻辑,生产者只关心是否正确将消息写入消息队列,消费者只关心从消息队列中获取消息,然后进行处理逻辑,生产者和消费者之间不需要直接的交互调用,没有代码的依赖耦合。

耦合度越低程序代码越容易维护,也容易进行扩展。

流量削峰

一般在秒杀活动中广泛使用。

在秒杀活动中,一般由于瞬时访问量过大,服务器瞬间接收了大量的请求,流量暴增,这种情况下很有可能导致相关系统无法处理请求甚至崩溃。为了解决这个问题,一般会在应用的前端加入消息队列。

  • 请求先写入消息队列,而不是由业务系统直接处理,做了一次缓冲,极大的减少了业务处理系统的压力。
  • 队列的长度可以做限制,一般秒杀活动都是有数量限制的,后写入队列的用户无法秒杀到商品,这样的请求可以直接被抛弃,可以直接返回活动已结束或商品已售完。

使用消息队列,即便是访问流量持续的增长,系统依然可以持续的接收请求。虽然生产者生成的消息比消费者消费的速度快,但是通过消息队列进行了缓冲,在短时间内,生产者和消费者之间处理能力不会互相影响,同样也可以保证系统的稳定性。

消息通讯

消息队列一般都内置了高效的通信机制,因此可以用于单纯的消息通讯,比如实现点对点消息队列或者聊天室。

广播

如果没有消息队列,每当一个新的业务方介入,那都需要联调一次接口。有了消息队列,只需要关系消息是否送达了队列,至于谁希望订阅,是下游的事情,无疑极大地减少了开发和联调的工作量。

日志处理

将消息队列用在日志处理中,解决了大量日志传输的问题(如Kafka)。

消息队列的传输模式

点对点模式(Point to Point)

点对点模式 用于 消息生产者消息消费者 之间 点到点 的通信。消息生产者将消息发送到由某个名字标识的特定队列(Queue)。在消息传递给消费者之前它被 存储 在这个队列中。队列消息 可以放在 内存 中也可以 持久化,以保证在消息服务出现故障时仍然能够传递消息。

ff4501d8cd089c6cc18378621e7f9888.png

点对点模式特点:

  • 每个消息只有一个消费者(Consumer),即一旦消息被消费,消息就不再在消息队列中。
  • 生产者和消费者之间没有依赖性,生产者发送消息之后,不管有没有消费者在运行,都不会影响到生产者下次发送消息。
  • 消费者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息。

发布/订阅模式(Publish/Subscribe)

发布者/订阅者 模型支持向一个特定的 消息主题 生产消息。 0 或多个 订阅者 可能对接收来自 特定消息主题 的消息感兴趣。

在这种模型下,发布者和订阅者彼此不知道对方。多个消费者可以获得消息,在 发布者订阅者 之间存在 时间依赖性。发布者需要建立一个 订阅subscription),以便能够消费者订阅。订阅者 必须保持 持续的活动状态接收消息

d324aeb481f2d7a54de83a2b58d3b87b.png

发布/点阅模式特点:

  • 每个消息可以有多个订阅者。
  • 发布者和订阅者之间有时间上的依赖性,针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息。
  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行。

集中消息中间件对比

目前在生产环境,使用较多的消息队列有ActiveMQRabbitMQZeroMQKafkaMetaMQRocketMQ等。

4c7ba3ad87fbb9932dbc1736e14fdc2d.png

093760de408ea91b902a8ff46c70e7e3.png

好文推荐:

  • 一篇文章带你快速搞懂HBase RowKey设计
  • 带你快速上手HBase | HBase列族优化
  • 带你快速上手HBase | HBase读写性能优化
  • Spark快速入门 | Spark任务调度
  • Spark快速入门 | Spark执行过程
  • Spark快速入门 | RDD操作手册
  • Spark快速入门 | RDD介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_762434.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html底部导航_干货:通过HTML、XML站点导航,让电商网站SEO排名更靠前

站点地图有两种类型:HTML和XML。HTML站点地图主要指导访问者,XML站点地图指导搜索引擎机器人,以确保它们找到要索引的站点URL。了解两种站点地图类型的优缺点将有助于你优化搜索引擎。XML站点地图XML使信息让机器可读,XML站点地图为搜索引擎提…

html icon 引入emoji,给网站标题加Emoji表情ico图标

能在百度搜索(搜索引擎基本都支持)标题中自动显示Emoji表情ico图标的,如果快照更新的快,很快就会显示,但是现在很多知名的网站通常也是不会显示出来,一些比较知名的博客也都没有出现Emoji表情的ico图标,不管什么原因&a…

50佳精美的单页网站设计作品欣赏(下篇)

单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,现在依然有很多人喜欢。不过,并不是每个网站都适合做成单页,一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

win7下安装IIS7.0及部署VS2010 ASP.NET程序网站的相关问题

配置环境操作系统:microsoft windows 7服务平台:.net4.0开发工具:microsoft visual studio 20101.配置安装IIS(1)控制面板--->程序和功能--->打开或关闭windows功能(左边)--->internet信息服务。具体配置如…

网站静态化处理—缓存(4)

上篇我补充了下SSI的知识,SSI是一个十分常见的技术,记得多年前我看到很多门户网站页面的后缀是.shtml,那么这就说明很多门户网站都曾经使用过SSI技术,其实现在搜狐网站也还在用shtml,如下图所示: 由此可见S…

黑客组织匿名者(Anonymous)入侵肯尼亚石油公司网站

黑客组织Anonymous正力图清除些恶行。像童工,腐败和不公平现象如今在全球被完整地呈现。 就在几天前这个组织再次出现,参与表面似乎是一场废弃的与跨国公司的对抗,而实际上这个被称为“操作金丝雀”的组织现已经在参与始于去年冬天的非洲公司…

网络营销第六课(9):SEO搜索引擎优化(长尾关键词选取)

大家好,今天继续给大家讲一下关于“长尾关键词”的一些问题。主要是关于“长尾关键词”的拓展方式。 常用长尾关键词拓展方式:(10条) 1、产品或服务特点功能(质地、类别、行业背景) 2、产品或服务价格费用&…

收集的一些有用的网站

2019独角兽企业重金招聘Python工程师标准>>> hhttp://www.chinaz.com/ 站长之家https://www.google.com/webmasters/tools/home?hlzh-CN google 站长工具https://www.google.com/analytics google 网站分析http://tuboren.com 很不错的一个站,有大…

html外网发布网站的步骤,.NET发布网站详细步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法一、web网站发布1.打开 Visual Studio 2013 编译环境2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误3.如果项目没有错误右击WebUI层发布4.这样将会看到以下界面5.在配置文件中新建配置文件…

大家来分享自己收藏的前端开发网站

2019独角兽企业重金招聘Python工程师标准>>> 前端开发导航网站 HTML5研究小组 UI制造 MooSee摩色 appui loveui 盒子UI 移动设备产品设计 AndroidUI设计指导 转载于:https://my.oschina.net/kisshua/blog/138763

警惕钓鱼网站

概述 于今日某伙计,突然在官方大群里发布了一条大家感兴趣的通知,具体讲是一个在线的腾讯文档,如下图。便习惯性的点开查看。 以假乱真的腾讯文件 打开该文档,是一则通知,通知里有一张清晰度有限的图片(图…

ts 使用Visual Studio2012和TFS网站管理源代码

所需工具Visual Studio 2012http://tfs.visualstudio.com/微软网站微软账号 hotmail 或live都行达到目的适合于个人项目,多用户管理微软自家版本的git比如在公司的测试项目提交到tfs,然后在家里获取进行修改享用tfs的其它服务,如work items、…

探测网站(三)nikto探测Web服务器漏洞

2019独角兽企业重金招聘Python工程师标准>>> Nikto是一款开源的Web程序扫描器,可以扫描服务器中的存在的一些问题。Nikto是linux/Unix中的一款工具,可以从官方网站上下载,解压到本地运行。这里直接采用backtrack 5中集成的nikto工…

微信公众平台开发(免费云BAE+高效优雅的Python+网站开放的API)

虽然校园App是个我认为的绝对的好主意,但最近有个也不错的营销开发的模式出现:微信平台固定域名服务器。 微信公众平台的运行模式不外两个: 一、机器人模式或称转发模式,将说话内容转发到服务器上完成,拿服务器的回复再一次转发&a…

QQ影音的网站已经关闭

近日,腾讯关闭了QQ影音的网站,用户访问该网站会提示“400 Bad Request”,这个视频播放器目前长期不进行更新,在Windows 10下无法关联视频文件,QQ旋风云播放功能也被关闭,目前看来,这个产品已经完…

你的网站安全吗?WEB应用安全总结

2019独角兽企业重金招聘Python工程师标准>>> 应用安全越来越重要 —— 互联网上看到的大多数安全事件基本都和应用安全,尤其是 WEB 应用安全有关(随便翻翻 wooyun 之类的就知道了)。最近几年的工作基本都和应用安全有关系,借着这个机会也总结…

Amazon AWS S3 部署静态网站 + 绑定顶级域名 + DNSPod

2019独角兽企业重金招聘Python工程师标准>>> Amazon AWS S3 部署静态网站 绑定顶级域名 DNSPod 什么是 Amazon AWS S3? Amazon AWS Amazon Web Services官方是这么解释的 (http://aws.amazon.com/cn/products/?nc2h_ql): Amazon Web Services 提供一…

一个影响力大、实战、干货的SEO案例

事情的起因是这样的:额,旧的案例写着没意思,正在操作的案例又无法透漏更多的信息,思前想后,也许只有这个最合适了(绝对不能告诉你,这是领导教的只有一个案例的含蓄说法)。一、项目背景先来介绍下项目接手时…

干货满满:小团队(网站APP)没有数据方面的预算,推广运营人员如何用数据提升业务?...

先说结论:没有钱,没有预算照样可以做好数字运营,数字营销。想解决这个棘手的问题,要么花钱,要么花时间咯。下文中会具体讲花时间(精力)的方法。1.先从付费类的软件说起:截止2018年&a…

阿里云系列——5.网站云解析快速配置(简单+免费+详细+最新)

(又称:域名,主机,备案都配置好了,就是不能访问网站的解决方案--1.解析问题) 网站部署之~阿里云系列汇总 http://www.cnblogs.com/dunitian/p/4958462.html 直接访问网站发现> 进入管理页面:h…