1

IoT 및 Industry 4.0 개념을 기반으로하는 데모 용도로 테스트 응용 프로그램을 빌드했습니다. 다음은 중요한 사항입니다.원격 모니터링을위한 Azure 솔루션

  1. 나는 센서 데이터를 수집하고 MS 애저 클라우드로 밀어 (나무 딸기 파이 3) 윈도우의 IoT에 배경 응용 프로그램을 구축 할 수 있습니다. 거기에 많은 동시 IoT 장치 수 있습니다.
  2. Azure 측에서 IoT 허브는 장치 대 클라우드 메시지를 수신합니다.
  3. 그런 다음 데이터가 이벤트 허브로 데이터를 전달하는 스트림 분석 작업으로 전달됩니다.
  4. 이벤트 허브에는 Azure 웹 응용 프로그램에서 사용하는 두 개의 소비자 그룹이 있습니다.
  5. 기본 소비자 그룹은 WebJob에서 기록 데이터를 저장하는 데 사용되는 반면 이미지의 소비자 그룹 1은 MVC 5 앱에서 사용됩니다.
  6. MVC 5 앱은 SignalR을 사용하여 연결된 사용자에게 데이터를 전달하여 대시 보드를 업데이트합니다.
  7. 데모 목적으로이 시나리오는 잘 작동하고있는 것 같습니다. 여기서 우리는 5 또는 10 개의 동시 webapp 연결을 가지고 있습니다. 다음

설정의 아키텍처도

IoT solution Architecture diagram

실제 시나리오에 구름이 올 때 많은 동시 사용자가 응용 프로그램을 클라우드와 지점이있을 수 이제

문제 웹 애플리케이션을 여러 인스턴스로 수평 확장 할 수 있습니다.이 경우 이벤트 허브에서 이벤트를 직접 읽는 동안 문제가 발생할 수 있으며 모든 웹 애플리케이션 인스턴스가 수신하지는 못합니다 모든 이벤트 어느 쪽이 잘못 되었습니까이며 이것이 MS Azure remote monitoring Architecture diagram의 이유라고 생각합니다. 그 webapp은 이벤트 허브에서 직접 메시지를 읽지 않습니다.

질문

문제를 해결하기 위해 위의 아키텍처에 가장/qucik 변경 무엇을 할 수 있고, 여전히 고객에게 실시간 이벤트를 표시?

+1

@CSharpRocks lol, 당신은 이미 그가 포함했던 링크를 제공했습니다. –

+0

Azure에서 [Logical architecture] (https://docs.microsoft.com/en-us/azure/iot-suite/iot-suite-remote-monitoring-sample-walkthrough#logical-architecture)를 사용할 때의 문제점은 무엇입니까? 그것에 저장소 (Blob)? –

+0

@ RitaHan-MSFT 내 마음에 유일한 질문은 웹 GUI로 전달되는 실시간 이벤트를 얻을 수 있습니까? 현재는 Event Hub에서 모두 처리되므로 새 이벤트가있을 때마다 GUI에 직접 전달됩니다. 'Logical architecture'에서는 GUI에 직접 전달되지 않고 Blob에 저장됩니다. 새로운 이벤트가 생기 자마자 GUI를 업데이트해야합니다. –

답변

1

이벤트 허브에서 이벤트 데이터를 직접 읽는 것은 이러한 quotas and limits에 의해 제한됩니다. 이벤트 허브 당 파티션의

최대 개수는 소비자 그룹 내의 단일 파티션이 언제든지 연결 5 개 이상의 동시 독자가 할 수없는 32

주입니다.

예를 들어 하나의 이벤트 허브가있는 경우 최대 32 * 5 개의 동시 판독기가 지원됩니다.

동시 사용자 수가 더 많은 경우 (> 32 * 5) 이벤트 허브 수를 늘려야합니다.

이벤트 허브에서 이벤트를 직접 읽는 동안 문제가 발생할 수 있으며이 경우 모든 웹 응용 프로그램 인스턴스가 모든 이벤트를 수신하지는 않습니다.

이 몇 가지 가능한 이유 :

  1. 하나 이상의 독자 Epoch 설정으로 인해 분리합니다.
  2. If you don't specify a partition key when publishing an event, a round robin assignment is used. 그런 다음 지정된 파티션에서 수신하면 다른 파티션의 이벤트 데이터가 손실됩니다.

5 명의 동시 독자가 하나의 파티션에서 이벤트를받는 시나리오를 테스트합니다. 이벤트 손실 없음.

희망이 도움이 될 것입니다. 우려되는 점이 있으면 언제든지 알려주세요.

+0

설명해 주셔서 감사합니다. 파티션 키를 지정하지 않았습니다. 이는 이벤트 허브가 Stream Analytics Job의 출력으로 설정 되었기 때문입니다. 그리고 이벤트는 RR 방식으로 파티션간에 분산되어 있다고 생각합니다. 읽기를 위해서 나는'EventProcessorHost'를 사용하고 있습니다. 또한 웹 응용 프로그램은 20 개의 병렬 인스턴스 (Scale-up)를 가질 수 있으며 각각 고유 한 EventProcessorHost를 가지므로 EventProcessorHost는 전역 적으로 클라우드 저장소에서 오프셋을 유지하므로 일부 웹 응용 프로그램 인스턴스는 메시지를 놓칠 수 있습니다. EventProcessorHost와 함께 작동시킬 수 있습니까? –