AWS Messaging Services:选择合适的服务
1. AWS Messaging Services
AWS Messaging服務(wù)使云中相似和不同的軟件系統(tǒng)能夠異步通信和交換信息。 這些軟件系統(tǒng)可能不兼容且使用不同的語言,也可能在不同的平臺上。 AWS消息傳遞服務(wù)具有高度可用性,高度可擴(kuò)展性和高度可靠性。 AWS支持針對不同類型用例的多種消息傳遞服務(wù)。 在本文中,我們將討論各種AWS消息服務(wù),并根據(jù)應(yīng)用程序需求選擇合適的消息服務(wù)。
消息服務(wù)允許通常不兼容且在不同平臺上以不同編程語言開發(fā)的不同軟件系統(tǒng)進(jìn)行通信和交換信息。
2. Amazon SQS(簡單隊列服務(wù))
Amazon SQS是一種分布式隊列Web服務(wù),用于在軟件系統(tǒng)之間異步交換消息。 SQS用于開發(fā)具有分離組件的大規(guī)模分布式系統(tǒng),而無需擔(dān)心創(chuàng)建和管理隊列。 SQS有兩種類型,即標(biāo)準(zhǔn)和先進(jìn)先出。 FIFO隊列維護(hù)生成和使用的消息的順序,并提供一次精確的傳遞機(jī)制。 標(biāo)準(zhǔn)隊列嘗試保留訂單,但很靈活,并且至少提供一次交貨。 “標(biāo)準(zhǔn)隊列”中的消息可以多次傳遞,“標(biāo)準(zhǔn)隊列”提供高吞吐量。
隨著請求數(shù)量的增長,Amazon SQS會水平擴(kuò)展。 SQS中的消息是使用服務(wù)器端加密進(jìn)行加密的,并且在隊列中的生命周期內(nèi)都是安全的。
如果您的應(yīng)用程序需要更快的消息處理速度,但是不關(guān)心消息順序或消息的重復(fù)發(fā)送,則“標(biāo)準(zhǔn)隊列”是最佳選擇。 為了確保有保證的訂單并且只有一次交貨,請使用FIFO隊列。 當(dāng)使用者接收并處理該消息時,該消息將保留在隊列中,直到將其顯式刪除或消息保留時間到期為止。 Amazon SQS設(shè)置消息的可見性超時 (默認(rèn)為30秒,最長為12小時),以防止其他使用者再次處理同一條消息。
在一對一消息傳遞,發(fā)送電子郵件,表單和文件處理的情況下,SQS最為有用。
SQS整合2.1 SQS限制
- 郵件大小限制為256 KB
- 默認(rèn)情況下,SQS中的郵件將在4天后刪除,但是最多可以延長14天
- 在標(biāo)準(zhǔn)SQS中,消息可以一次傳遞
2.2 SQS最佳實(shí)踐
- 根據(jù)處理消息所需的時間,將消息的可見性超時延長到處理和刪除消息所需的最長時間。
- 如果您不知道從SQS處理消息需要花費(fèi)多長時間,請為使用者流程創(chuàng)建心跳并相應(yīng)地延長可見性超時。
- 長時間輪詢有助于降低Amazon SQS成本。 在實(shí)施長輪詢時,每個隊列使用一個線程,而不是所有隊列使用一個線程。 對所有隊列使用一個線程可能會導(dǎo)致您的應(yīng)用程序無法處理其他隊列中可用的消息。
- 使用唯一消息ID可以防止使用者處理相同的消息。
3. Amazon SNS(簡單通知服務(wù))
Amazon SNS是一個完全托管的發(fā)布/訂閱異步推送通知系統(tǒng),消息生產(chǎn)者在其中發(fā)布消息,多個訂閱者接收消息。 發(fā)布/訂閱消息傳遞模型用于使應(yīng)用程序分離,并提高應(yīng)用程序的性能,可伸縮性和可靠性。 推送到SNS的消息將在多個可用性區(qū)域中保持不變,以防止丟失消息。 SNS向所有訂閱者發(fā)送帶有訂閱URL的消息,訂閱者需要確認(rèn)訂閱才能接收該消息。
SNS允許將消息發(fā)送到多個服務(wù),包括SQS,Lambda,HTTP,電子郵件,SMS等。AmazonSNS可以與SQS結(jié)合使用,因此發(fā)布到SNS的消息將發(fā)送給每個SQS和每個用戶SQS將收到該消息。
SNS訂戶Amazon SNS提供了加密的主題,以保護(hù)您的消息免遭未經(jīng)授權(quán)的匿名訪問。 將消息發(fā)布到加密主題后,將立即使用AES-GCM算法和由密鑰管理服務(wù)發(fā)布的客戶主密鑰對消息進(jìn)行加密。 消息在傳遞到訂閱端點(diǎn)時被解密。 在刪除SNS主題之前,請確保首先刪除該主題的所有訂閱。 使用SNS,可以將消息從AWS發(fā)送到各種平臺,例如iOS,Android,Java,Node Js,Python,.NET等SDK。
SNS最適合事件通知,將消息發(fā)布到多個訂戶,向每個SQS隊列發(fā)送專用消息等用例。
3.1 SNS消息
推送到SNS主題的郵件將具有以下部分。
- MessageId –消息的唯一ID
- 時間戳–消息創(chuàng)建時間戳
- TopicArn –消息發(fā)布到的主題
- 類型–交付類型
- UnsubscribeUrl –取消訂閱該主題的鏈接
- 消息–消息有效負(fù)載
- 主題–主題字段
- 簽名–郵件的Base64編碼簽名
- 簽名版本– SNS簽名版本
3.2 SNS局限性
- 來自SNS的消息可能會多次傳遞
- 在訂戶失敗的情況下,可以將消息傳遞配置的次數(shù)。
4. Amazon MQ
Amazon MQ是Apache ActiveMQ的托管消息傳遞服務(wù)。 AWS管理ActiveMQ的配置,設(shè)置,修補(bǔ)和維護(hù)。 可以使用標(biāo)準(zhǔn)API和協(xié)議(例如JMS,NMS,AMQP,STOMP,MQTT和WebSocket)輕松遷移現(xiàn)有應(yīng)用程序并將其連接到Amazon MQ。
Amazon MQ提供了消息的高可用性和持久性。 消息生產(chǎn)者和使用者之間的Amazon MQ延遲非常少(單位為毫秒)。 放置在Amazon MQ中的消息始終在多個可用區(qū)之間冗余存儲。 Amazon MQ支持分布式事務(wù)。 代理名稱在一個AWS賬戶中應(yīng)該是唯一的,每個代理的存儲容量限制為200GB。
將消息放在Amazon MQ上時,可以觸發(fā)Lambda函數(shù)。 在混合云環(huán)境中,可將本地數(shù)據(jù)中心中的ActiveMQ與云上的Amazon MQ集成在一起以交換消息。 請參閱此文檔,以將Java應(yīng)用程序與Amazon MQ連接以及創(chuàng)建消息生產(chǎn)者和使用者。
Amazon MQ集成4.1 Amazon MQ的最佳實(shí)踐
- Amazon MQ使用其安全管理的加密密鑰對靜態(tài)消息和傳輸中的消息進(jìn)行加密。 強(qiáng)烈建議同時使用客戶端加密。
- 要針對速度慢的使用者優(yōu)化Amazon MQ,請將parallelStoreAndDispatchQueues屬性設(shè)置為false 。
- 使用正確的代理實(shí)例類型以提高吞吐量
- 在多生產(chǎn)者和多消費(fèi)者應(yīng)用程序的情況下,為多個生產(chǎn)者按需創(chuàng)建大量連接可能效率很低。 使用連接池而不是使用PooledConnectionFactory類。 不要在消息使用者上使用PooledConnectionFactory 。
4.2配置連接池(來自AWS
// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint);// Pass the username and password. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword);// Create a pooled connection factory. final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); pooledConnectionFactory.setMaxConnections(10);// Establish a connection for the producer. final Connection producerConnection = pooledConnectionFactory.createConnection(); producerConnection.start();4.3 Amazon MQ限制
- 每個AWS賬戶的每種代理實(shí)例類型的代理數(shù)量限制為20
- 限制為每個代理的安全組數(shù)為5
- 每個經(jīng)紀(jì)人的存儲容量限制為200GB
5.亞馬遜Kinesis
Amazon Kinesis是一種完全托管的Web服務(wù),用于實(shí)時處理大數(shù)據(jù)。 Kinesis有助于收集,處理和分析實(shí)時流數(shù)據(jù),以深入了解信息。 使用Kinesis,可以在數(shù)據(jù)到達(dá)并立即響應(yīng)時對其進(jìn)行分析。 使用Kinesis,可以分析視頻,音頻,應(yīng)用程序日志,網(wǎng)站點(diǎn)擊流和IoT遙測。 Amazon Kinesis具有高度的可擴(kuò)展性,可以處理幾乎任何數(shù)量的流數(shù)據(jù)并處理來自成千上萬個來源的數(shù)據(jù),而幾乎沒有延遲。 Kinesis每小時可以處理來自各種數(shù)據(jù)流的TB級數(shù)據(jù)。 Kinesis保持消息的順序。
運(yùn)動整合Amazon Kinesis最適合用于用例,例如收集和分析溫度,濕度傳感器等傳感器數(shù)據(jù)。它還可以可靠地吸收所有市場數(shù)據(jù)并建立實(shí)時分析。
5.1運(yùn)動學(xué)限制
- 數(shù)據(jù)Blob大小限制為1 MB
- 默認(rèn)情況下,消息會在24小時后從信息流中刪除,但最多可以延長7天
6.亞馬遜Pinpoint
Amazon Pinpoint是托管在Amazon Web Services上的完全托管的營銷和分析服務(wù)。 使用Amazon Pinpoint營銷團(tuán)隊可以獲取見識以加強(qiáng)活動并確定如何與客戶群進(jìn)行有效溝通。 使用Amazon Pinpoint,營銷人員可以定義活動計劃,以向應(yīng)用程序最終用戶發(fā)送定向消息。
Amazon Pinpoint可以與移動和Web應(yīng)用程序集成,以深入了解客戶如何與您的應(yīng)用程序進(jìn)行交互。 它還有助于發(fā)送有針對性的電子郵件,SMS,推送通知和語音消息,還可以跟蹤客戶如何響應(yīng)您的消息,即已發(fā)送,打開或單擊的消息數(shù)。 這對于發(fā)送促銷或教育內(nèi)容以吸引和留住用戶很有用。
Amazon Pinpoint有用的一些用例是:
- 匯總所有營銷活動的數(shù)據(jù)
- 提供有關(guān)您安裝了應(yīng)用程序的設(shè)備的信息的人口統(tǒng)計圖
- 有關(guān)用戶參與度和廣告系列指標(biāo)的分析
- 有關(guān)應(yīng)用程序使用時間和客戶保留的分析
- 收入圖表,提供有關(guān)客戶購買及其產(chǎn)生的收入的詳細(xì)信息
- 用戶身份驗(yàn)證分析
7.亞馬遜物聯(lián)網(wǎng)經(jīng)紀(jì)人
AWS IoT消息代理是一項(xiàng)托管的高吞吐量發(fā)布者/訂閱者代理服務(wù),可用于向AWS IoT收發(fā)消息。 客戶端將有關(guān)主題的消息發(fā)送到AWS IoT。 該消息代理將消息發(fā)送給該主題的所有注冊客戶端。 使用AWS IoT,可以以低延遲安全地傳輸所有IoT設(shè)備之間的消息。 根據(jù)消息量,可以自動縮放消息代理。 AWS IoT支持一對一消息傳遞或百萬廣播通知系統(tǒng)。 AWS文檔中列出了更多AWS IoT功能。
翻譯自: https://www.javacodegeeks.com/2019/03/aws-messaging-services-choosing-right-service.html
總結(jié)
以上是生活随笔為你收集整理的AWS Messaging Services:选择合适的服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机械能如何转化为内能 机械能转化为内能的
- 下一篇: 超氧化钠的化学式是什么 超氧化钠的解释