簡體   English   中英

如何使用AWS每分鍾執行一次方法(多個流程/實例)

[英]How to execute a method once (multiple processes/instances) per minute utilizing AWS

我有一個進程,每分鍾發送一次SQS消息。 消息每分鍾發出一次很重要,因此我計划在多個實例上運行該過程,以使其更具容錯能力。

即使它在多個實例上運行,我也只希望SQS消息每分鍾發出一次。 因此,如果機器A調度了消息,我不希望機器B發送消息,反之亦然。

我想避免進行主/從設置。

我想到了使用一個單獨的SQS隊列來發送一條已完成的消息,該消息可以被其中一個進程接收,以開始分發消息,並在完成/一分鍾后發送已完成的消息,但是如果未發送完成的消息,是因為故障或其他問題的循環將結束,這是不可接受的。

我還考慮過將分發消息的過程放在時間戳記在simpleDB或可能在另一個DB中的過程,並讓這些過程按一定間隔檢查時間戳記。 第一個檢查它並發現它超過一分鍾的文件將更新時間戳並發送消息。

我調查了SWF,發現它可以在計時器上運行工作程序/活動,但是SWF似乎對此有些大材小用,我寧願避免對其進行設置並在可以訪問我的數據庫的情況下運行。

有沒有人能解決這樣的問題?

我們使用了mysql db來完成與您建議的類似的操作。 但是我們不嘗試讀取時間戳(競賽條件?)。 該表在時間戳上具有唯一索引。 每個實例上的進程都會嘗試插入其運行分鍾的時間戳,例如“ 2015-02-27 12:47:00”。 如果mysql返回重復的鍵錯誤,則另一個實例首先出現,它們什么也不做。 如果插入成功,則發送SQS消息。

您可能還想嘗試使用Google的分布式Cron系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM