2016-05-30 51 views
0

我們需要從IOT設備(溫度,壓力,RPM等共50多個參數)的1000獲取數據並顯示在儀表盤上沒有太多的處理(只檢查,如果數字是在範圍否則引發報警),但實時。 我已經審查和測試了許多aws博客資源,如Kinesis Storm ClickStream AppAWS流數據信息圖表

但是我認爲使用風暴對於這樣一個簡單的任務來說是一種矯枉過正。我想要做的就是將數據保存在數據庫中並顯示圖表(30分鐘,1小時或自定義日期)。這是我迄今

Device -> AWS IOT(mqtt) -> Kinesis -> x -> dynamoDB -> Presenter Web APP (Laravel) 我可能必須使用Node.jsRedis Pub/Sub在點擊流例如對於實時更新圖表和警報提到想通。

我不想使用Apache Storm,因爲它使用Java並且有學習曲線(並且找不到任何好的資源)。我知道我可以使用Lambda,但不知道它將如何擴展。

  • 上的解決方案有什麼想法?
  • AWS沒有KCL for PHP,替代方案或解決方案?因爲我熟悉PHP但不熟悉Java。

回答

1

Apache的風暴是一個分佈式事件處理框架。在你的用例中,你似乎沒有對事件進行任何計算。基本上,您的應用程序正在執行三項任務:

  1. 將數據接收到系統中。
  2. 從時段X讀取數據到Y
  3. 畫上一個web前端的圖形。

攝入部分由AWS-IOT照顧。您應該做的第一步是創建SNS主題並將所有IoT數據發佈到SNS主題。在這裏,您可以靈活地爲每個數據類型創建一個主題(例如:溫度,壓力),並將消費者隊列添加到要累積消息的主題中。對於持久性數據庫,一個消費者可以是DynamoDB表,另一個消費者可以是執行某種過濾和數據轉換並更新緩存的功能的Lambda函數。如果您需要對數據執行某種類型的OLAP /分析查詢,請考慮使用Redshift作爲其中一個用戶。你將不得不進入特定的要求來完成你的設計。

+0

感謝@Adi,所以你說的是,我完全消除室壁運動和使用 '設備(S) - > AWS IOT(MQTT) - > SNS - > SQS - > LAMBDA - > dynamoDB'。你也說過「一個消費者可以是DynamoDB」是什麼意思?是發電機能夠直接保存數據到某個表,還是我需要lambda? – Junaid

+0

Kinesis和SQS只是兩種不同的排隊解決方案,它們的用例略有不同。 Kinesis最適合您需要數據持久性的數據,並以數據流形式攝取。我不會去SQS vs Kinesis的討論,你可以自己評估它。 「一位消費者可以成爲DynamoDB」:當您發佈任何SNS主題的消息時,您可以讓任意數量的消費者傾聽該主題。因此,它表現爲1 ... N消息傳遞。詳細瞭解SNS。 – Adi