SQS (Simple Queue Service)简介

news2024/11/26 12:32:19

mazon Simple Queue Service (SQS)是一种完全托管的消息队列服务,可以让你分离和扩展微服务、分布式系统和无服务应用程序。

在讲解SQS之前,首先让我们了解一下什么是消息队列。

消息队列

还是举一个电商的例子,一个用户在电商网站下单后付款后,应用服务器马上查询/更新数据库,连接支付网关并查询支付状态,通知短信/邮件网关发送相关短信/邮件,更新库存系统,更新物流系统……最后返回信息给用户,“您的下单已成功”。

但是如果网站的访问数很大,或者正值促销活动(比如淘宝双11,京东618)呢?

这个时候每一个流程都是一个瓶颈,一旦某一个地方达到了瓶颈或者出现故障,又或者用户下单的时间比程序处理订单的时间还要久的情况下,都会让用户得不到成功下单的结果,或者得到结果的时间非常长,导致用户体验不好。

这个时候,我们就要考虑到应用程序的解耦(decouple)

我们可以引入消息队列,让不同的应用程序之间打断强连接的关系,互不干扰。

应用服务器在接收到用户付款的订单之后,就把相关的信息丢到消息队列,并且返回用户“您的下单已成功,请稍后查看详细订单状态”。

而支付网关、短信/邮件网关、库存系统、物流系统等等可以到消息队列里面拉取信息,并且进行相关的数据更新和操作。

这些操作可能不需要是实时的,但是至少能保证这些队列里的信息最终都会被执行。比如下单后我不一定马上能收到短信/邮件的通知,我可能5分钟/10分钟之后才收到这些信息通知,但这个并不影响正常的业务。

这样子,消息队列就起到了连接上层业务和下层业务的作用。

Amazon SQS相当于提供了一个分布式、高可用、高性能的消息队列服务。

SQS特点

SQS有两种不同类型的队列,它们分别是:

  • 标准队列(Standard Queue)
  • FIFO队列(先进先出队列)

标准队列

标准队列拥有无限的吞吐量,所有消息都会至少传递一次,并且它会尽最大努力进行排序。

标准队列是默认的队列类型。

FIFO队列

FIFO (First-in-first-out)队列在不使用批处理的情况下,最多支持300TPS(每秒300个发送、接受或删除操作)。

在队列中的消息都只会不多不少地被处理一次

FIFO队列严格保持消息的发送和接收顺序

更多关于标准队列和FIFO队列的区别,可以查看我需要哪种类型的队列?

SQS的其他特点

  • SQS是靠应用程序去拉取的,而不能主动推送给应用程序,推送服务我们使用SNS(Simple Notification Service)
  • 消息会以256 KB的大小存放
  • 消息会在队列中保存1分钟~14天,默认时间是4天
  • 可见性超时(Visibility Timeout)
    • 即当SQS队列收到新的消息并且被拉取走进行处理时,会触发Visibility Timeout的时间。这个消息不会被删除,而是会被设置为不可见,用来防止该消息在处理的过程中再一次被拉取
    • 当这个消息被处理完成后,这个消息会在SQS中被删除,表示这个任务已经处理完毕
    • 如果这个消息在Visibility Timeout时间结束之后还没有被处理完,则这个消息会设置为可见状态,等待另一个程序来进行处理
    • 因此同一个消息可能会被处理两次(或以上)
    • 这个超时时间最大可以设置为12小时
  • 标准SQS队列保证了每一个在队列内的消息都至少会被处理一次
  • 长轮询(Long Polling)
    • 默认情况下,Amazon SQS使用短轮询(Short Polling),即应用程序每次去查询SQS队列,SQS都会做回应(哪怕队列一直是空的)
    • 使用了长轮询,应用程序每次去查询SQS队列,SQS队列不会马上做回应。而是等到队列里有消息可处理时,或者等到设定的超时时间再做出回应。
    • 长轮询可以一定程度减少SQS的花销

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode每日一题:[面试题 17.05] 字母与数字-前缀和+Hash表】

题目描述 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。 示例 1: 输入…

LDGRB-01 3AFE61320954P0001

LDGRB-01 3AFE61320954P0001变频器的作用_变频器工作原理变频器是把工频电源(50Hz或60Hz)变换成各种频率的交流电源,以实现电机的变速运行的设备,其中控制电路完成对主电路的控制,整流电路将交流电变换成直流电&#x…

教育培训机构屡遭投诉?湖南中创教育给出三点建议

在中消协发布的《2021年校外教育培训领域消费者权益保护报告》中,受新冠疫情以及校外教育培训行业治理政策的冲击,我国校外教育培训领域消费维权舆情及消费者投诉呈上升趋势。2021年全国消协组织受理有关校外教育培训的投诉案件共80,528件,同…

探索N-gram模型:语言模型中的基础算法

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Proteus8.15安装教程

1、解压Proteus8.15 安装包,然后双击进去,找到setup文件,右键,以管理员身份运行。 2、需要安装一些插件,点击“next”。把插件安装完成。 点击“finfish” 点击“install” 点击“Cancel” 3、如果没有上面步骤&…

零拷贝技术

1. 零拷贝技术 零拷贝就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术。针对操作系统中的设备驱动程序、文件系统以及网络协议堆栈而出现的各种零拷贝技术极大地提升了特定应用程序的性能,并且使得这些应用程序可以更加有效地利用系统资源。这种性能的…

latex使用笔记

在线表格转latex格式:https://tablesgenerator.com/ 在线公式转latex格式:https://latex.91maths.com/ 1、希腊字母 eg.σ 2、% 3、大小写罗马数字 大写罗马数字:\uppercase\expandafter{\romannumeral} 在romannumeral后加上相应的数字即可。 eg.Ⅱ \uppercas…

Python每日一练(20230311)

目录 1. 合并两个有序数组 2. 二叉树的右视图 3. 拼接最大数 🌟 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为…

SpringSecurity第一讲

目录 一、SpringSecurity01 1.2 什么是会话 1.2.1 基于session的认证 1.2.2 基于ToKen的认证 1.3 什么是授权 1.3.1 为什么要授权 1.3.2 SpringSecurity简介 1.4 SpringSecurity入门 1.4.1 pom文件 1.4.2 主启动类 1.4.3 创建控制层 1.4.4 启动项目进行测试 1.5 自…

工作三年,月薪不到20k,软件测试工程师,担心被应届生取代

工作了3年,一个月工资不到20K,担心被应届毕业生取代! 互联网的快速发展伴随着员工适者生存的加速。几年是一条分界线。如果人们的能力和体力不够,他们就会被淘汰。生动的工作生活让许多人焦虑不安。 最近,一名来自211本…

Java分布式事务(五)

前言 随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,下图描述了单体应用向微服务的演变。 文章目录🔥分布式事务处理-认识分布式事物🔥分布式架构的理论知识-CAP理论🔥分布式事务处理-分布式事务产…

查询校园网是否支持IPv6绕过校园网

方法一、连接校园网,登录认证网络可用后返回WIFI页面点击校园网WIFI的属性查看是否有IPV6地址 本地的IPV6地址不算哦 (一般IPv6地址都是数字开头,fe80开头的都是本地IPv6地址是没用的)方法二、连接校园网,登录认证网络…

《信号分析与处理》期末复习题库整理(题目+手写知识点+答案+期末知识点精细)

文章目录一、傅里叶变换、s域变换、z域变换(待:整理一些常用以及方程变换)傅里叶变换s域变换z域变换二、试卷一、选择题12345678910111213141516171819202122232425262728二、填空题123567891011121314151617三、计算题123456781011121314151…

shiro反序列化

shiro550反序列化 | 清风的博客这个看着更舒服点 环境搭建 JDK:1.7 Tomcat:8.5.83 shiro源码:下载地址:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 shiro war包:下载地址SHIRO-550/samples-…

逻辑优化基础-disjoint support decomposition

先遣兵 在了解 disjoint support decomposition 之前,先学习两个基本的概念。 disjoint 数学含义上的两个集合交集,所谓非相交,即交集为空集。 A∩BC⊘A \cap B C \oslash A∩BC⊘ support 逻辑综合中的 supportsupportsupport 概念是…

【创建“待选项”按钮02计算坐标 Objective-C语言】

一、之前,我们已经把“待选项”按钮,创建好了,但是唯一的问题是,坐标都是一样的,所以都显示在一起了 1.下面,我们来设置一下,这些“待选项”按钮的坐标, 现在,“待选项”按钮的坐标,是不是都在同一个位置啊, 回忆一下,这个待选项按钮,是怎么生成的, 首先,是在…

PCA-APCA-MLR

全称 principal component analysis-absolute principal component score-multiple linear regression 原理 绝对因子分析/多元线性回归受体模型(APCS—MLR)的基本原理是将因子分析的主因子得分转化为绝对主因子得分(APCS),各指标含量再分别对所有的APCS进行多元线性回…

课程作业及比赛任务,已支持 Notebook 内直接提交|ModelWhale 版本更新

早春时节、万物复苏,我们又迎来了 ModelWhale 新一轮的版本更新。本次更新中,ModelWhale 主要进行了以下功能迭代:新增 Notebook 内提交课程作业及比赛任务(团队版✓ )新增 Canvas 组件停止维护提示(团队版…

44-Golang中的channel

Golang中的channel为什么要使用channelchannel的介绍channel的基本使用定义/声明channel管道的遍历和关闭channel的关闭channel的遍历goroutine和channel结合应用实例1应用实例2案例注意事项为什么要使用channel 前面使用全局变量加锁同步来解决goroutine的通讯,但…

设计模式—适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0c…