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的花销

SQS (Simple Queue Service)简介相关推荐

  1. java queue使用_使用Java使用Amazon Simple Queue Service

    java queue使用 Amazon Simple Queue Service或SQS是Amazon Webservice堆栈提供的高度可扩展的托管消息队列. Amazon SQS可用于完全解耦系统 ...

  2. 使用Java使用Amazon Simple Queue Service

    Amazon Simple Queue Service或SQS是Amazon Webservice堆栈提供的高度可扩展的托管消息队列. Amazon SQS可用于完全解耦系统中不同组件的操作,这些组件 ...

  3. SWF (Simple Workflow Service)简介

    Amazon Simple Workflow Service (Amazon SWF) 提供了给应用程序异步.分布式处理的流程工具. SWF可以用在媒体处理.网站应用程序后端.商业流程.数据分析和一系 ...

  4. 使用Amazon Simple Queue Service(SQS) 实现简单的消息服务

    一  引言 亚马逊Amazon作为云计算的领跑者推出了很多云服务,最近因为项目的原因,需要用到SQS服务,因此简要地写下这篇随笔,一来方便以后查阅,二来方便共享一些简单的操作. SQS即可以理解为一个 ...

  5. 用 Amazon Web Services 进行云计算,第 2 部分: 用 Amazon Simple Storage Service (S3) 在云中存储数据

    用 Amazon Web Services 进行云计算,第 2 部分: 用 Amazon Simple Storage Service (S3) 在云中存储数据 简介: 学习基本的 Amazon Si ...

  6. Amazon Simple Storage Service (Amazon S3) 简介

    Amazon Simple Storage Service (Amazon S3) 接下来要介绍的是如何将先前的应用程序从 EC2 搬移到更轻量的 Container 里,但在介绍 Container ...

  7. 【SAP】ABAP——Web Service简介与配置方法

      本文转载  https://www.cnblogs.com/zohoo/p/7295920.html. 一. SAP Web Service简介 二. SAP Web Service配置准备工作 ...

  8. SAP Web Service简介与配置方法

    [版权声明]本文为博主原创文章,转载请在明显位置注明出处. 一. SAP Web Service简介 二. SAP Web Service配置准备工作 1. 通过RZ10配置服务器名称和其他参数 2. ...

  9. 亚马逊推出Simple Workflow Service手册

    亚马逊刚刚发布了一份白皮书与代码示例,其中包含了Amazon Simple Workflow Service手册. Amazon Simple Workflow Service(SWF)是: --面向 ...

最新文章

  1. 上传图片时出现Request 对象 错误 'ASP 0104 80004005'
  2. 进入编译器后,一个函数经历了什么?
  3. 九大排序算法,你会几个?
  4. Intel GPU及NVIDIA GPU对视频编解码支持情况
  5. 大学阶段总结——大二
  6. Redis操作ZSet相关API
  7. 19.Qt中Thread线程中创建QTcpSocket
  8. 后端数据库的初步设计
  9. a标签的四个伪类是什么?如何排序?为什么?
  10. 5个小技巧让你写出更好的JavaScript 条件语句
  11. linux 时间相关的一些总结
  12. Python:文件的读取、创建、追加、删除、清空
  13. C#中virtual与abstract的区别
  14. python设计模式 韦塞尔 pdf下载_PYTHON设计模式
  15. 计算机程序阶乘怎么写,N的阶乘的程序怎么写啊?VB啊
  16. 20小时快速学习【系统动力学】
  17. 计算机修理工具包价格,电脑修复工具包#200多个联想工程师专用电脑修复小工具打包...
  18. xmind 8 pro安装jh
  19. java 获取当前第几周_java获取第几周
  20. 如何查看Windows 桌面壁纸的位置

热门文章

  1. eclipse介绍,环境配置,mysql安装
  2. Symbol referencing errors
  3. 华三交换机ping不通用户但用户_用H3C模拟器做交换机实验,但是终端总是PING不通交换机,求各位高手帮忙!...
  4. PHP中使用SCWS中文分词详解
  5. DataTable 与 datagrid控件
  6. 摩托罗拉铱星计划破灭案例分析
  7. 银河麒麟v10系统+龙芯3A5K 移植qt5的惨痛经历(一)
  8. 如何将wma转换成mp3格式?
  9. DG备库-OGG 同步
  10. 3天精通Postman---基础应用接口测试流程接口架构和协议