日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AWS SQS, SWF and SNS

發(fā)布時(shí)間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AWS SQS, SWF and SNS 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQS (Simple Queue Service)

  • 概念
  • 簡(jiǎn)單消息服務(wù),類似于Rabbit MQ,主要作用是作為消息中間件,解耦應(yīng)用程序的各個(gè)組件
  • SQS不保證消息FIFO,但能保證消息的高可靠
  • 消息的生命周期
  • 生產(chǎn)者將消息發(fā)送到消息隊(duì)列,此時(shí)消息的狀態(tài)變?yōu)閕n-flight
  • 消費(fèi)者從消息隊(duì)列中獲取消息,此時(shí)消息的狀態(tài)變?yōu)閜rocessed,在visibility timeout的時(shí)間段以內(nèi),其它消費(fèi)者無法獲取到相同的消息
  • 消費(fèi)者處理完畢消息后,從SQS中消息刪除
  • Visibility Timeout
  • 某個(gè)消費(fèi)者從消息隊(duì)列中取出一個(gè)消息后,visiblity timeout開始計(jì)時(shí),此時(shí)該消息不能被其它消費(fèi)者獲取。如果超時(shí)了該消息還沒有被開始的消費(fèi)者刪除,則該消息的狀態(tài)又變?yōu)閕n-flight,其它消費(fèi)者可以獲取該消息繼續(xù)處理。
  • 該機(jī)制很好理解,試想,如果某個(gè)消費(fèi)者獲取了某個(gè)消息,但可能某種原因處理失敗了卻又一直不刪除此消息,該消息就會(huì)一直處于processed狀態(tài),消息即不能被刪除,又不能被其它消費(fèi)者處理,這就是一個(gè)問題,所以引入了timeout機(jī)制。
  • 超時(shí)時(shí)間范圍30s-12h,默認(rèn)30s
  • Delay Queue
  • 如果設(shè)置了delay queue,所有消息都會(huì)被延時(shí)處理,直到delay的時(shí)間到了。
  • delay的時(shí)間范圍0-15m
  • In-flight
  • 消息被發(fā)送到queue后其狀態(tài)為in-flight,默認(rèn)可以有120000個(gè)in-flight消息
  • Queue的操作,Unique IDs
  • CreateQueue,ListQueues,DeleteQueue,SendMessage, SendMessageBatch,ReceiveMessage,DeleteMessage,DeleteMessageBatch,ChangeMessageVisibility,etc
  • 發(fā)送消息到queue后,SQS會(huì)返回一個(gè)消息的唯一ID,該ID只是用于標(biāo)識(shí)該消息,不能操作消息
  • 從queue獲取到消息后SQS會(huì)返回receipt handle,可以用此句柄操作消息,如刪除消息等
  • Queue and message identifiers
  • Queue:queue URL,每個(gè)Queue都有個(gè)URL用于唯一標(biāo)識(shí)該Queue
  • Message ID:唯一標(biāo)識(shí)消息,但不能操作消息
  • Receipt handles:消息句柄,也能唯一標(biāo)識(shí)消息,用于操作消息
  • Message Attributes
  • 消息屬性,用于對(duì)消息的額外描述,如時(shí)間戳,簽名等,可選項(xiàng),不是必須設(shè)置的
  • Long Polling
  • 默認(rèn)情況用于獲取消息的邏輯是在一個(gè)循環(huán)里不停的調(diào)用ReceiveMessage,如果有消息則交專門的線程處理,如果沒有則返回空。ReceiveMessage不是阻塞式的,也就是說如果沒有消息其就會(huì)馬上返回。這樣可能有一個(gè)問題,如果一直沒有消息則會(huì)陷入死循環(huán),會(huì)增加CPU的開銷。可以通過每次循環(huán)后sleep一段時(shí)間來解決,但如果有很多消息則會(huì)降低系統(tǒng)性能,因?yàn)槊看味家猻leep。
  • Long Polling是指為SQS設(shè)置一個(gè)時(shí)間,在該時(shí)間段里調(diào)用ReceiveMessage后如果沒有消息則調(diào)用會(huì)被阻塞。如果被阻塞后在該時(shí)間段內(nèi)有新的消息,則立即返回消息,如果超時(shí)后還沒消息則返回空。
  • Long Polling時(shí)間范圍1-20s
  • Dead Letter Queue
  • 將處理失敗的消息放入dead letter queue,以便trouble shooting
  • Access Control
  • 通過創(chuàng)建IAM policy可以設(shè)置Queue的訪問權(quán)限,例如只允許某個(gè)賬號(hào)在某個(gè)時(shí)間段訪問Queue等
  • Queue就是AWS的一個(gè)資源,通過IAM policy可以準(zhǔn)確指定訪問權(quán)限
  • Durability
  • 如果向SQS發(fā)送消息,SQS只有確定存儲(chǔ)完成后才會(huì)返回成功,這能保證消息的持久性,且操作簡(jiǎn)單
  • 不像其它的異步處理系統(tǒng),發(fā)送消息后會(huì)立刻返回,而不管消息是否處理成功
  • 如果要建立SQS的異步調(diào)用,可以在SendMessage調(diào)用的上層進(jìn)行處理,例如專門的線程來發(fā)送消息而不管發(fā)送結(jié)果
  • 消息可以在Queue中存放4-14天
  • SWF?(Simple Workflow?Service)

  • 概念
  • 簡(jiǎn)單工作流服務(wù),用于協(xié)調(diào)某個(gè)工作流的各個(gè)處理子流程,在各個(gè)處理流程上應(yīng)用不同的處理分支來完成任務(wù)
  • SWF支持串行處理,并行處理,同步處理和異步處理等類型
  • Domains
  • SWF域,是一組資源的集合和分組
  • 一個(gè)domain可以包含多個(gè)workfkow,且workflow之間可以有交互,但一個(gè)workflow只能屬于某一個(gè)domain
  • History
  • 通過查看workflow history可以知道詳細(xì)的處理流程細(xì)節(jié),完成時(shí)間,錯(cuò)誤記錄等
  • Actors
  • Workflow Starter:用于初始化和啟動(dòng)某個(gè)workflow
  • Workflow Decider:用于決定下一個(gè)工作流是什么
  • Activity Workers:用于執(zhí)行具體的任務(wù)
  • Tasks
  • Activity tasks:執(zhí)行具體的任務(wù)
  • Lambda tasks:通過Lambda執(zhí)行具體的任務(wù)
  • Decision tasks:執(zhí)行任務(wù)來決定下一個(gè)工作流是什么
  • Task List
  • 任務(wù)列表,可以理解為task的隊(duì)列,是所有任務(wù)的集合
  • Long Polling
  • Decider和Activity worker與SWF相互通信的途徑
  • 與SQS的long polling有點(diǎn)類似,都是周期性的檢查他們和SWF的狀態(tài),如果有需要處理的任務(wù),則進(jìn)行相應(yīng)的處理
  • Object Identifier
  • Workflow Type:Domain name,version
  • Activity Type:Domain name,version
  • Decision and activity task:Unique task token
  • Execution of workflow:Domain,workflow ID,run ID
  • Execution Closure
  • 如何結(jié)束任務(wù):完成,取消,錯(cuò)誤,超時(shí)
  • 簡(jiǎn)單的workflow執(zhí)行流程
  • Starter通知SWF開始某個(gè)工作流
  • SWF通知Decider下一步如何處理
  • Decider返回SWF下一個(gè)處理的任務(wù)
  • SWF通知Activity worker處理任務(wù)
  • Activity worker處理完畢后返回SWF
  • SWF通知Decider下一步如何處理
  • ......
  • Decider通知SWF任務(wù)處理完畢
  • SWF關(guān)閉workflow執(zhí)行流程,歸檔歷史記錄等
  • SNS (Simple Notification Service)

  • 概念:簡(jiǎn)單通知服務(wù),用于通知終端用戶某個(gè)事件的發(fā)生,運(yùn)行方式類似生產(chǎn)者消費(fèi)者模式。
  • 通知方式
  • Email,發(fā)郵件
  • SQS,向隊(duì)列發(fā)消息
  • HTTP/s,可能是通過提交http請(qǐng)求或者調(diào)用RESTful發(fā)送消息
  • SMS,發(fā)短信
  • AWS Lambda,執(zhí)行Lambda程序
  • Topic
  • 一個(gè)topic就是一個(gè)SNS的接入點(diǎn),任何想發(fā)送通知的生產(chǎn)者都是將通知發(fā)送到某個(gè)topic
  • Subscription
  • 訂閱某個(gè)topic,就是將某種通知方式關(guān)聯(lián)到某個(gè)topic,只要topic接受到生產(chǎn)者發(fā)送的通知,SNS就會(huì)將通知轉(zhuǎn)發(fā)給所有訂閱者
  • 一個(gè)topic可以對(duì)應(yīng)多個(gè)subscription,一個(gè)subscription只對(duì)應(yīng)一個(gè)topic
  • SNS的使用場(chǎng)景
  • Fanout:通知的扇出,是指某個(gè)topic接受到某個(gè)生產(chǎn)者發(fā)送的消息后,SNS會(huì)將其消息轉(zhuǎn)發(fā)給所有訂閱者,通知被擴(kuò)散了
  • Applicaiton and system alert,應(yīng)用和系統(tǒng)的告警,如EC2 instance異常關(guān)閉,EC2 的CPU使用率過高,系統(tǒng)出現(xiàn)異常導(dǎo)致無法啟動(dòng)服務(wù)等都可以通過SNS告知用戶
  • Push Email and Text Message:向用戶群發(fā)郵件或短信,例如廣告信息,通知信息等
  • Mobilie Push Notificatoin:向應(yīng)用推送更新通知,并可以包含下載鏈接等
  • 總結(jié)

    以上是生活随笔為你收集整理的AWS SQS, SWF and SNS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。