1

我已經爲一些基於物聯網和工業4.0概念的演示目的構建了測試應用程序。以下是重要的一點。用於遠程監控的Azure解決方案

  1. 我有建立在Windows的IoT後臺應用(上樹莓 裨3)收集傳感器數據,並推到MS Azure雲。有 可能是許多同時的物聯網設備。
  2. 在Azure方面,IoT Hub接收設備到雲消息。
  3. 然後將數據傳遞到將數據傳遞到事件中心的流分析作業。
  4. 事件中心在我的配置中有2個消費者組,這兩個組都由Azure Web應用程序使用。
  5. WebJob使用默認使用者組來存儲歷史數據,而MVC 5應用程序使用圖像中名爲消費者組1的自定義使用者組。
  6. MVC 5應用程序使用SignalR將數據傳遞給連接的用戶以更新儀表板。
  7. 爲了演示的目的,這個場景似乎工作正常,我們有5或10個同時連接到雲webapp。

以下是安裝程序的體系結構圖

IoT solution Architecture diagram

問題

現在對於真正的情況可能有許多用戶同時雲應用和存在的問題時,雲來進入遊戲中,它可以將webapp橫向放大到許多實例,在這種情況下直接從Event Hub讀取事件可能會產生問題,而不是所有的web-app實例都會收到所有事件這是錯誤的,我認爲這是MS Azure remote monitoring Architecture diagram的原因,即webapp不直接從Event Hub讀取消息。

問題

什麼可能是最好/入住改變上述架構來解決問題,但還是顯示實時事件給客戶?

+1

@CSharpRocks哈哈,你剛剛提供了他已經包含的鏈接。 –

+0

使用[邏輯體系結構](https://docs.microsoft.com/en-us/azure/iot-suite/iot-suite-remote-monitoring-sample-walkthrough#logical-architecture)時,使用Azure時會出現什麼問題存儲(Blob)在裏面? –

+0

@ RitaHan-MSFT在我腦海中唯一的問題是我可以實現傳遞給Web GUI的實時事件嗎?因爲目前它全部由Event Hub處理,並且每當有新事件發生時它就直接傳遞給GUI,在Logical architecture中它被存儲在Blob中,不直接傳遞給GUI。一旦發生新事件,我需要更新GUI。 –

回答

1

直接從事件中心讀取事件數據受到這些quotas and limits的限制。

每次事件的集線器分區的最大數量是32。

注意,一個消費者組內的單個分區不能在任何時候連接超過5個併發讀取。因此,例如,如果您有一個事件中心,則最多支持32 * 5個併發讀取器。

如果您有更多的同步用戶(> 32 * 5),則需要增加事件中心的數量。

就可能造成問題,而直接在這種情況下,閱讀從事件中心 事件,而不是所有的web應用程序實例將接收所有事件...

有一些可能的原因:

  1. 如果一個或更多的讀者Epoch設置斷開所致。
  2. If you don't specify a partition key when publishing an event, a round robin assignment is used。然後從指定分區接收將丟失其他分區的事件數據。

我測試了五個同步閱讀器從一個分區接收事件的情況。沒有事件損失。

希望這對你有所幫助。如果有任何問題,請隨時通知我。

+0

感謝您的解釋。我沒有指定分區鍵。因爲事件中心設置爲流分析作業的輸出。我認爲事件分佈在RR時尚的分區中。閱讀我使用'EventProcessorHost'。此外,一個Web應用程序可以有20個並行實例(Scale-up),並且每個實例都有自己的EventProcessorHost,因此在這種情況下,一些Web應用程序實例可能會錯過消息?,因爲EventProcessorHost會在雲存儲中全局保留偏移量。我可以使它與EventProcessorHost一起工作嗎? –