aws sqs基礎概念和隊列參數解析

分布式隊列的組成部分

  • 生產者,向隊列發送消息的組件
  • 消費者,接受隊列消息
  • 隊列,多個sqs服務器存儲冗余存儲消息

sqs自動刪除超過最大留存時間的消息(默認4天),可以通過SetQueueAttributes調整為(60 s to 1,209,600 s (14 天) )

消息的生命周期

  • 生產者向sqs發送消息,在多個服務器上冗余存儲

  • 消費者請求消費,可見性超時開始計時,消息并未刪除但不接受后續消費請求

  • 消費者消費完畢刪除消息,避免可見性超時后重復消費

隊列類型

標準隊列

由于分布式存儲,sqs副本服務器可能故障導致消費和刪除消息失敗,導致重復消費。需要將application設置為冪等的

fifo隊列

  • 發送消息時消息本身帶有不重復id,sqs按照發送順序處理
  • 如果多個生產者向同一個消息組id發送,則在消費組中按照先后順序處理
  • 消息僅在同一個消息組中有序,不同消息組的消息無序
  • 隊列中的消息組數量沒有上限
  • 無法接收指定消費組的消息
  • 接受具有多個消息組id的隊列時,sqs首先嘗試返回盡可能多的具有相同消息組 ID 的消息
  • fifo隊列允許重試邏輯
  • fifo在標準隊列的基礎上引入了exactonce,需要配置基于內容的重復數據刪除(使用SHA-256 hash生成去重id)或者顯示提供去重id
  • 不能將現有的標準隊列轉換為 FIFO 隊列,必須為應用程序創建一個新的 FIFO 隊列
  • fifo隊列不支持每個消息延遲,只支持每個隊列延遲
  • fifo的數據在分片中存儲,請求接近或超過分片上限會自動添加新分片,分片的利用率較低可能會減少分片,此操作對用戶透明
  • 消息所處的分片取決于消息組id的hash,建議大量使用消息組id區分分片
  • sqs異步緩沖客戶端不支持fifo隊列
  • 不兼容fifo隊列的服務包括,s3事件通知,asg生命周期鉤子,iot規則行動,lambda死信隊列

隊列比較

隊列類型標準隊列FIFO 隊列
吞吐量無限吞吐量,支持每個 API 操作每秒幾乎無限次的 API 調用高吞吐量 ,如果使用批處理,則每個 API 方法(發送,接受,刪除),FIFO 隊列每秒最多支持 3,000 條消息。每秒 3000 條消息指可能 300 個 API 調用,每個調用都包含10 條消息。可以提限
不使用批處理,FIFO 隊列的每個 API 方法(發送,接受,刪除)每秒最多支持 300 個 API 調用
數據重復at least onceexact once
數據有序盡力排序 ,可能亂序
img
先進先出傳送 — 嚴格保留消息的發送和接收順序。
img
使用場景當吞吐量很重要時當事件的順序重要時

隊列參數

可見超時

 	            Visibility Timeout

  • 可見性超時設置從隊列接收的消息(由一個使用者接收)對其他消息使用者不可見的時間長度
  • 如果消息必須只接收一次,則使用者必須在可見性超時期間刪除該消息
  • 默認的可見性超時設置為30秒
  • 為了獲得最佳性能,將可見性超時設置為大于 AmazonWebServicesSDK 讀超時

消息保留期

  • 保留不會被刪除的消息的時間量

  • 默認4天,保留時間從60秒到1,209,600秒(14天)不等

  • 消息的過期時間總是基于其原始的隊列時間戳。當消息移動到死信隊列時,隊列時間戳保持不變。例如,如果一條消息在被移動到死信隊列之前在原始隊列中停留1天,并且死信隊列的保留期被設置為4天,那么該消息將在3天后從死信隊列中刪除

延遲時間

img

  • 適用于使用者需要額外的時間來處理消息。發送到隊列的任何消息在延遲期間對使用者都是不可見的
  • 隊列的默認(最小)延遲為0秒,最多15分鐘
  • 對于標準隊列該設置不可回溯的(不會影響隊列中已有消息的延遲)。對于 FIFO 隊列是可追溯的

最大消息大小

  • 支持的最小消息大小為1字節,最大大小為262,144字節(256 KB)
  • 要發送大于256kb 的消息,可以使用 sqs 擴展的 Java 客戶端庫。該消息包含對 AmazonS3中消息有效負載的引用。最大有效載荷大小為2G

接收消息等待時間

  • 接收消息等待時間是輪詢等待消息可用以接收的最長時間
  • 最小值為0秒,最大值為20秒
  • 在服務端(設置上限),如果將接收消息等待時間設置為0,則接收請求使用短輪詢
  • 在客戶端(實際輪詢時間),當 ReceiveMessage 請求的 WaitTimeSecond 參數設置為0時,將發生短輪詢

Redrive allow

  • 定義哪些源隊列可以使用此隊列作為死信隊列
  • 通過 ARN 指定最多10個源隊列的列表
  • 源隊列必須由相同的帳戶擁有,并且必須與死信隊列駐留在相同的區域中

死信隊列

  • MaxReceiveCount 是使用者在移動到死信隊列之前嘗試從隊列接收消息而不刪除消息的次數

  • DLQ 隊列類型(標準或 FIFO)必須與源隊列匹配

  • 源隊列和死信隊列必須由相同的帳戶擁有,并且必須與死信隊列駐留在相同的區域中

隊列權限

授權其他賬戶訪問sqs權限的示例

{"Sid": "__sender_statement","Effect": "Allow","Principal": {"AWS": ["12323112441"]},"Action": ["SQS:SendMessage"],"Resource": "arn:aws-cn:sqs:cn-north-1:xxxxxxxxxxx:"
},
{"Sid": "__receiver_statement","Effect": "Allow","Principal": {"AWS": ["12323112441"]},"Action": ["SQS:ChangeMessageVisibility","SQS:DeleteMessage","SQS:ReceiveMessage"],"Resource": "arn:aws-cn:sqs:cn-north-1:xxxxxxxxxxx:"
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15562.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【408真題】2009-13

“接”是針對題目進行必要的分析,比較簡略; “化”是對題目中所涉及到的知識點進行詳細解釋; “發”是對此題型的解題套路總結,并結合歷年真題或者典型例題進行運用。 涉及到的知識全部來源于王道各科教材(2025版&…

JMH 微基準測試(性能測試)

寫本文主要是簡單記錄一下JMH的使用方式。JMH全名是Java Microbenchmark Harness,主要為在jvm上運行的程序進行基準測試的工具。作為一個開發人員,在重構代碼,或者確認功能的性能時,可以選中這個工具。 本文場景:代碼重…

VBA即用型代碼手冊:刪除Excel中空白行Delete Blank Rows in Excel

我給VBA下的定義:VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率,而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。 作為我的學員要利用我的積木編程思想,積木編程最重要的是積木如何搭建…

IDEA中好用的插件

IDEA中好用的插件 CodeGeeXMybatis Smart Code Help ProAlibaba Java Coding Guidelines?(XenoAmess TPM)?通義靈碼常用操作 TranslationStatistic CodeGeeX 官網地址:https://codegeex.cn/ 使用手冊:https://zhipu-ai.feishu.cn/wiki/CuvxwUDDqiErQU…

Android 自定義圖片進度條

用系統的Progressbar,設置圖片drawable作為進度條會出現圖片長度不好控制,容易被截斷,或者變形的問題。而我有個需求,使用圖片背景,和圖片進度,而且在進度條頭部有個閃光點效果。 如下圖: 找了…

速盾:流量攻擊防護DDOS有哪幾種有效的防御措施?

DDoS(分布式拒絕服務)攻擊是一種網絡攻擊方式,攻擊者通過向目標服務器發送大量的請求,超出其處理能力,導致服務器無法正常運行,從而使服務中斷或降級。為了保護網絡安全,減少DDoS攻擊對網站和服…

Kafka(十三)監控與告警

目錄 Kafka監控與告警1 解決方案1.2 基礎知識JMX監控指標代理查看KafkaJMX遠程端口 1.3 真實案例Kafka Exporter:PromethusPromethus Alert ManagerGrafana 1.3 實際操作部署監控和告警系統1.2.1 部署Kafka Exporter1.2.2 部署Prometheus1.2.3 部署AlertManger1.2.4 添加告警規…

大疆上云API本地部署與飛機上云

文章目錄 前言一、安裝基礎環境1. EMQX 安裝(版本4.4.0)2. MySql 安裝(版本8.0.26)3. Redis 安裝 二、部署后端(JDK必須11及以上)三、部署前端四、成為大疆開發者五、飛機注冊上云六、綁定飛機七、無人機狀態查看八、直播流查看 前言 大疆上云API官方文…

HarmonyOS鴻蒙應用開發——ArkTS的“內置組件 + 樣式 + 循環和條件渲染”

一、內置組件是咩? 學過前端的都知道,一個組件就是由多個組件組成的,一個組件也可以是多個小組件組成的,組件就是一些什么導航欄、底部、按鈕......啥的,但是組件分為【自定義組件】跟【內置組件】 【自定義組件】就…

Web開發核心

文章目錄 1.http協議簡介2.http協議特性3.http請求和響應協議4.最簡單的Web程序5.基于flask搭建web?站6.瀏覽器開發者?具(重點) 1.http協議簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于 萬維網(WWW:Norld W…

【狂神說Java】Redis筆記以及拓展

一、Redis 入門 Redis為什么單線程還這么快? 誤區1:高性能的服務器一定是多線程的? 誤區2:多線程(CPU上下文會切換!)一定比單線程效率高! 核心:Redis是將所有的數據放在內…

用于時間序列概率預測的蒙特卡洛模擬

大家好,蒙特卡洛模擬是一種廣泛應用于各個領域的計算技術,它通過從概率分布中隨機抽取大量樣本,并對結果進行統計分析,從而模擬復雜系統的行為。這種技術具有很強的適用性,在金融建模、工程設計、物理模擬、運籌優化以…

【C語言】C語言-設備管理系統(源碼+數據文件)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉公眾號👈:測試開發自動化【獲取源碼商業合作】 👉榮__譽👈:阿里云博客專家博主、5…

AI大模型:大數據+大算力+強算法

前言:好久不見,甚是想念,我是辣條,我又回來啦,兄弟們,一別兩年,還有多少老哥們在呢? 目錄 一年半沒更文我干啥去了? AI大模型火了 人工智能 大模型的理解 為什么學習…

ComfyUI完全入門:圖生圖局部重繪

大家好,我是每天分享AI應用的螢火君! 這篇文章的主題和美女有關,不過并不是教大家生產美女視頻,而是講解 ComfyUI 的圖生圖局部重繪,其中將會以美女圖片為例,來展示局部重繪的強大威力。 先看看效果&…

2024年5月26日 十二生肖 今日運勢

小運播報:2024年5月26日,星期日,農歷四月十九 (甲辰年己巳月庚寅日),法定節假日。 紅榜生肖:馬、豬、狗 需要注意:牛、蛇、猴 喜神方位:西北方 財神方位:…

java hashmap在項目中的使用

java hashmap在項目中的使用 1,緩存機制: 在需要頻繁訪問數據但又不想每次都從數據庫或遠程服務獲取的場景中,可以使用 HashMap 作為緩存。例如,在一個 Web 應用程序中,用戶信息可能只需要在登錄時從數據庫檢索一次&a…

解釋器和編譯器(程序語言基礎)

一、解釋器 解釋器則是一種逐行或逐段地解釋執行源代碼的工具。解釋器會直接讀取源代碼,并在運行時逐行或逐段地解釋執行代碼,不生成獨立的目標代碼文件。解釋器適用于一些動態語言,允許用戶在代碼執行過程中進行交互,更容易調試…

【linux_常用的指令】

筆記 1連接遠程主機2 兩臺主機間復制2.1 查看當前目錄2.2 普通復制 3 創建能運行sudo命令的用戶3.1 更改用戶admin的密碼3.2 切換到admin用戶,并且啟動一個新的shell3.3 更改文件或目錄的權限 4 切換目錄5 解.tar.gz格式的壓縮包6 運行.sh文件7 查看當前目錄的所有文…

泛型中K T V E ? Object等分別代表的含義

E – Element (在集合中使用,因為集合中存放的是元素) T – Type(Java 類) K – Key(鍵) V – Value(值) N – Number(數值類型) ? – 表示不確定的java類型&…