簡體   English   中英

如何處理關系數據庫中的AWS IOT流數據

[英]How to handle AWS IOT streaming data in relational database

通用信息 :-我正在設計一種IOT問題方法的解決方案,在該方法中,數據不斷地從plc(可編程邏輯控制器)流式傳輸,plc具有不同的標簽,這些標簽表示遙測數據,並且數據將從這些標簽連續流式傳輸,每個的設備將具有為0或1的警報標簽,1表示存在設備故障問題聲明 :-如果警報標簽值為1,則我必須讀取警報標簽並提出票證,並且我必須流式傳輸這些警報到儀表板,我也必須維護故障單歷史記錄,因此操作員也可以更新故障單狀態

我的解決方案 :-我正在使用AWS IOT,我正在dynamo db中獲取數據,然后我正在使用dynamo db stream來檢查是否在警報表中添加了任何新項目以及它是否將觸發lambda函數(我已經在Java中實現) lambda函數使用hibernate在關系數據庫中打開一個新票證。

我的方法存在的問題 :-AWS IoT數據一直以非常快的速度連續流向警報表,這在關閉之前就打開了很多連接,這使我的關系數據庫崩潰了

請讓我知道我是否可以采用其他好的設計方法?

使用Amazon Kinesis Analytics處理流數據。 Dynamodb不適合此功能。

在這里閱讀更多

下圖會給你一個相同的想法

在此處輸入圖片說明

只是一個建議。

從lambda,不要聯系RDS,

而是在AWS SQS中推送所有警報

那么您可以使用AWS CloudWatch Rules每分鍾安排另一個lambda,它將從AWS SQS中選擇所有項目,然后立即將它們插入RDS。

我同意raevilman的設計,即不讓Lambda直接與RDS聯系。 由於創建新故障單不是Lambda函數要做的唯一任務,因此您還將這些警報流式傳輸到儀表板。 根據流速率和RDS限制,您可能需要將這些任務分成多個隊列。

通用解決方案:我建議您可以將警報推送到扇出交換機,而該交換又會根據需要將警報推送到一個或多個隊列。 然后,您可以批處理警報並一起執行多次寫操作,而無需多次執行連接/斷開循環。

AWS專用解決方案:我沒有使用過SQS,因此無法對其架構進行評論。 或者,您可以創建一個SNS主題並將這些警報發布到該主題。 然后,您可以將SQS隊列作為此主題的訂閱者,而這些隊列又將彼此獨立地用於票務和儀表板目的。

在這里,再次從票證隊列中,您可以使用Lambda或您自己的調度程序批量輪詢消息並處理票證(頻率取決於緊急警報的時間)。 您可能需要閱讀本教程以獲得一些指導

您可以控制lambda函數並發數。 這將減少基於發電機事件旋轉的lambda數量。 從而減少與RDS的連接。

https://aws.amazon.com/blogs/compute/managing-aws-lambda-function-concurrency/

當然,這將限制發電機事件。

暫無
暫無

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

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