簡體   English   中英

AWS Lambda之間的同步

[英]Synchronization between aws lambdas

我正在使用幾個AWS lambda函數(以及相同的多個實例)來訪問AWS中的對象。 有關lambda的線程安全性的任何信息? 盡管寫入順序並不重要(在我的情況下),但read-modify-write的原子性卻很重要。 任何人都遇到適當/預期的解決方案?

我遇到了這個問題,因為我試圖實現同一目標。

問題:我在EC2實例中運行着一組狀態機。 每個都異步調用Lambda(InvocationType.Event)。 我想每次都運行lambda代碼,但只在lambda內部執行一次下游網絡調用。

解決方案:使用TTL相對較低的DynamoDB表,我對從事件數據生成的具有唯一ID的項執行條件放置,該事件數據在該唯一事件的所有lambda調用中都相同。 然后,如果條件放置成功,則僅執行下游網絡調用。

這是一種分布式同步技術,僅通過lambda即可在分布式系統中用於“快速故障”系統。

嚴格的讀取-修改-寫入原子性要求處理序列化(可能使用鎖等)。 Lambda無法做到這一點。

您可以執行以下操作:將請求寫入SQS隊列,然后在單個EC2實例上使用單線程(或正確同步)的軟件來處理隊列條目。

CAP定理( https://en.wikipedia.org/wiki/CAP_theorem )說,這會影響您的可用性,因為按設計,單個EC2實例上的此過程將成為您的單點故障。

您還可以將RDS DB與事務一起使用(甚至將DynamoDB與條件寫入/一致讀取一起使用)。

暫無
暫無

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

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