Eficiencia del rendimiento en la carga de trabajo de IoT

Las soluciones de IoT incluyen componentes de dispositivos, perimetrales y en la nube, y van desde millones de dispositivos pequeños conectados a la nube hasta soluciones industriales en las que algunos servidores eficaces son puertas de enlace para la conectividad en la nube. El número de dispositivos, su ubicación física y geográfica, y el número de mensajes que envían o reciben son algunos de los factores que pueden definir la eficacia del rendimiento de una carga de trabajo de IoT.

La eficiencia del rendimiento también incluye la capacidad de una carga de trabajo de IoT para escalar de forma eficaz para satisfacer las demandas. Una ventaja de la nube es la disponibilidad geográfica y la capacidad de escalar servicios a petición, con poco o ningún tiempo de inactividad de la aplicación.

La eficiencia del rendimiento representa el rendimiento en relación con el uso de recursos en condiciones indicadas. La eficiencia del rendimiento mide el rendimiento de un producto o sistema, al realizar sus funciones, cumple los requisitos para:

  • Comportamiento de tiempo, como los tiempos de respuesta, los tiempos de procesamiento y las tasas de rendimiento.

  • Uso de recursos, o cantidades y tipos de recursos usados.

  • Capacidad o límites máximos.

Evaluación de la eficiencia del rendimiento en la carga de trabajo de IoT

Para evaluar la carga de trabajo de IoT a través de las lentes del pilar de eficiencia del rendimiento de Well-Architected Framework, complete las preguntas sobre la eficiencia del rendimiento de las cargas de trabajo de IoT en Azure Well-Architected Revisión. Después de que la evaluación identifique las recomendaciones clave de eficiencia del rendimiento de la solución de IoT, use el siguiente contenido para ayudar a implementar las recomendaciones.

Principios de diseño

Cinco pilares de excelencia arquitectónica respaldan la metodología de diseño de cargas de trabajo de IoT. Estos pilares sirven como brújula para las decisiones de diseño posteriores en las áreas clave de diseño de IoT. Los siguientes principios de diseño amplían el pilar de calidad del marco de trabajo de Azure Well-Architected: eficiencia del rendimiento.

Principio de diseño Consideraciones
Diseño para el escalado horizontal Una solución de IoT puede empezar con unos cientos de dispositivos o mensajes y crecer hasta millones de dispositivos y mensajes por minuto. Puede escalar fácilmente los servicios en la nube a un aumento de la carga, pero la situación puede ser más compleja para dispositivos y puertas de enlace de IoT. Los dispositivos IoT se pueden diseñar o implementar antes de que finalice la solución. IoT industrial o sectores similares pueden medir la vida útil de los dispositivos en décadas. La actualización de la capacidad reemplazando los dispositivos es costosa. En estos escenarios, es especialmente importante planear con antelación.
Desplazamiento a la izquierda en las pruebas de rendimiento Prueba temprana y prueba a menudo para detectar problemas temprano. Tenga en cuenta la complejidad de tener sensores, dispositivos y puertas de enlace en ubicaciones geográficamente diferentes con diferentes características, velocidad y confiabilidad de la comunicación. Planee esta complejidad en las pruebas y asegúrese de probar escenarios de error como la desconexión de red. Realice pruebas de esfuerzo y carga de todos los componentes del dispositivo, el perímetro y la nube en la solución de IoT.
Supervisar continuamente el rendimiento en producción Para supervisar diferentes tipos de dispositivos en varias regiones geográficas, use una solución de supervisión distribuida. Equilibre la cantidad de información supervisada y enviada a la nube con respecto a los costos de memoria y rendimiento. Ajuste la transmisión para escenarios de diagnóstico y supervise en varios niveles y capas. Exponga las métricas de puerta de enlace para soluciones industriales o habilitadas para puerta de enlace.

Capas de arquitectura de IoT

Los principios de diseño de eficiencia del rendimiento ayudan a aclarar las consideraciones para asegurarse de que la carga de trabajo de IoT cumple los requisitos en las capas fundamentales de la arquitectura de IoT. En las secciones siguientes se abordan los detalles de la capa para el pilar de eficiencia del rendimiento.

Diagrama en el que se muestran las capas y actividades transversales de la arquitectura de IoT.

Capa de dispositivo y puerta de enlace

Un dispositivo IoT es un dispositivo informático que se conecta a una solución de IoT y puede recopilar, transmitir o recibir datos. Las puertas de enlace son puntos de conexión entre dispositivos y la nube, o entre IoT y otros componentes.

Optimización de las funcionalidades de hardware

Actualizar o reemplazar hardware es costoso y lento. Tamaño de los dispositivos IoT para la capacidad y la funcionalidad necesarias de antemano.

Para optimizar las funcionalidades de hardware:

  • Ejecute tareas intensivas de proceso y salida de entrada en hardware específico. Por ejemplo, ejecute algoritmos de aprendizaje automático (ML) en unidades de procesamiento de gráficos locales (GPU).

  • Optimice las funcionalidades de hardware existentes mediante lenguajes y marcos eficaces, como Embedded C y Rust Embedded. Puede usar el SDK de C de Azure IoT Embedded al desarrollar para dispositivos restringidos o cuando la mayoría de la pila de seguridad y comunicación ya está disponible en el dispositivo.

  • Use el SDK de dispositivo IoT de Azure para C para todo lo que necesita para conectarse a la puerta de enlace en la nube. Los kits de desarrollo de software (SDK) de Dispositivo IoT de Azure administran los mecanismos de traducción de mensajes, control de errores y reintento necesarios para una conexión resistente.

El escalado es importante para el dispositivo y la capa de puerta de enlace. Para escalar esta capa:

  • Use puertas de enlace como unidades de escala. Si la solución agrega recursos o dispositivos IoT (por ejemplo, servidores OPC UA ) a lo largo del tiempo, use más puertas de enlace perimetrales para ingerir datos de esos servidores.

  • Realice una evaluación de escala para todas las capas ascendentes, incluidas las puertas de enlace en la nube y los servicios en la nube. Para más información sobre el uso de varios centros de IoT como unidades de escalado para una solución de IoT, consulte Aprovisionamiento de dispositivos en centros de IoT.

Ejecución de cargas de trabajo en el perímetro

En función de las restricciones del sistema, como el rendimiento de red o la latencia, considere la posibilidad de ejecutar algunas cargas de trabajo en el perímetro. Separe las cargas de trabajo por restricción de tiempo y los tiempos de respuesta y latencia necesarios. Use el proceso local para escenarios de baja latencia y conectados intermitentemente. Ejecute cargas de trabajo a gran escala en la nube.

En el perímetro, use colas de prioridad para enviar diferentes flujos de datos en el orden necesario. Con las colas de prioridad, los mensajes se envían en orden de prioridad, pero Azure IoT Hub siguen enviando mensajes según el orden de recepción.

Optimización de la conectividad del dispositivo

Tenga en cuenta los siguientes puntos para optimizar la conectividad del dispositivo:

  • Use las instancias de IoT Hub que tengan la latencia más baja para los dispositivos. Es posible que necesite IoT Hubs en varias regiones cuando los dispositivos necesiten conectarse desde diferentes ubicaciones geográficas.

  • Use una conexión con estado abierta para las comunicaciones bidireccionales entre los dispositivos y la solución de IoT para minimizar la sobrecarga de configuración de conexiones.

  • No conecte todos los dispositivos a la vez, por ejemplo después de una interrupción de energía regional. Use retroceso exponencial truncado con la vibración introducida al reintentar.

Optimización de escenarios sin conexión

Puede proporcionar a los dispositivos suficiente información y contexto para trabajar sin una conexión en la nube y almacenar datos localmente, de modo que puedan recuperarse de desconexiones y reinicios. Las estrategias siguientes admiten operaciones sin conexión:

  • Asegúrese de que el dispositivo es capaz de almacenar datos localmente cuando el dispositivo no está conectado, incluidos los registros y la telemetría almacenada en caché según la prioridad.

  • Establezca un período de vida (TTL) en los datos, de modo que los datos expirados se quiten automáticamente.

  • Descarte los datos menos importantes cuando el dispositivo no esté conectado, para reducir el almacenamiento local necesario y reducir el tiempo de sincronización cuando el dispositivo se vuelve a conectar.

  • Si el almacenamiento de dispositivos perimetrales alcanza la capacidad, use una estrategia de expulsión de caché, como el último en salir (FIFO), el último en salir (LIFO) o basado en prioridad.

  • Considere la posibilidad de usar un controlador de disco o disco independiente para almacenar datos, por lo que el tiempo de ejecución del dispositivo o la aplicación pueden seguir funcionando cuando no hay almacenamiento.

Use dispositivos gemelos y módulos gemelos para sincronizar de forma asincrónica la información de estado entre dispositivos y la nube, incluso cuando los dispositivos no están conectados actualmente a la puerta de enlace en la nube. Los dispositivos y módulos gemelos contienen solo el estado actual en un momento dado, no ningún historial ni información eliminada.

Capa de ingesta y nivel de comunicación

La capa de ingesta y comunicación de datos envía datos desde los dispositivos a la solución de IoT. Los patrones de comunicación entre dispositivos y la solución de IoT incluyen:

  • Mensajes de dispositivo a nube.
  • Mensajes de la nube al dispositivo.
  • Cargas de archivos.
  • Dispositivos gemelos
  • Métodos directos.

Optimización de la eficacia de la mensajería

El número y el tamaño de los mensajes de dispositivo a nube es un parámetro importante para la eficiencia del rendimiento de la solución de IoT. Los servicios de Azure IoT, como IoT Hub y Azure IoT Central, definen los límites de mensajes por nivel, lo que afecta tanto al rendimiento de la solución como al costo.

Tenga en cuenta las siguientes recomendaciones de mensajería:

  • IoT Hub y IoT Central calculan los recuentos diarios de mensajes de cuota en función de un tamaño de mensaje de 4 KB. El envío de mensajes más pequeños deja cierta capacidad sin usar. En general, use tamaños de mensaje cerca del límite de 4 KB. Agrupe mensajes de dispositivo a nube más pequeños en mensajes más grandes para reducir el número total de mensajes, pero tenga en cuenta la latencia introducida al combinar mensajes.

  • Evite la comunicación chata. Para la comunicación perimetral de dispositivo a dispositivo o módulo a módulo, no diseñe interacciones que envíen muchos mensajes pequeños.

  • Use el procesamiento por lotes de mensajes del SDK de Azure IoT Edge integrado para advanced Message Queuing Protocol (AMQP) para enviar varios mensajes de telemetría a la nube.

  • Use el procesamiento por lotes de nivel de aplicación combinando varios mensajes más pequeños en el dispositivo de bajada y enviando mensajes más grandes a la puerta de enlace perimetral. Este procesamiento por lotes limita la sobrecarga del mensaje y reduce las escrituras en el almacenamiento en disco perimetral local.

  • Use la multiplexación de conexiones AMQP para reducir la dependencia de los límites de conexiones del Protocolo de control de transmisión (TCP) por cliente del SDK. Con la multiplexación de conexiones AMQP, varios dispositivos pueden usar una única conexión TCP para IoT Hub.

  • Use métodos directos para las interacciones de solicitud-respuesta que pueden realizarse correctamente o con errores inmediatamente después de un tiempo de espera especificado por el usuario. Este enfoque es útil para escenarios en los que el curso de acción es diferente en función de si el dispositivo respondió.

  • Use dispositivos gemelos para obtener información sobre el estado del dispositivo, incluidos los metadatos y las configuraciones. IoT Hub mantiene un dispositivo gemelo para cada dispositivo que se conecte.

Descripción de las cuotas de mensajería y la limitación

El nivel IoT Hub establece límites de puerta de enlace en la nube por unidad. La cuota de mensajería define el rendimiento sostenido y las tasas de envío sostenidas para el nivel. IoT Hub puede controlar las cargas por encima de estas cuotas durante breves duraciones para controlar de forma resistente las ráfagas o las sobrecargas de carga.

Otro límite importante es la carga por hora o diaria del servicio o el límite. Los límites de limitación protegen un centro de IoT de demasiada carga durante demasiado tiempo.

En los diagramas siguientes se muestra la relación entre los límites de carga, cuota y limitación. En el diagrama izquierdo se muestra que IoT Hub pueden controlar la carga alta constante o sostenida hasta el nivel de la cuota del nivel de IoT Hub. En el diagrama derecho se muestra que IoT Hub puede controlar la carga que cambia con el tiempo, siempre y cuando no alcance el límite de limitación y, en promedio, no supere la cuota del nivel de IoT Hub.

Diagrama izquierdo que muestra una carga alta constantemente por debajo de la cuota. En comparación con el diagrama derecho que muestra una carga menor con picos ocasionales.

Optimización del procesamiento de mensajes

Es posible que los mensajes de un dispositivo o puerta de enlace deban traducirse, procesarse o enriquecerse con más información antes del almacenamiento. Este paso puede llevar mucho tiempo, por lo que es importante evaluar el efecto en el rendimiento. Algunas recomendaciones entran en conflicto, como el uso de la compresión para optimizar la transferencia de datos y evitar el procesamiento en la nube en los mensajes de descifrado. Estas recomendaciones deben equilibrarse y evaluarse con otros pilares arquitectónicos y requisitos de solución.

Para optimizar el rendimiento del procesamiento de datos en la nube:

  • Optimice el formato de datos usado para enviar datos a la nube. Compare el rendimiento (y el costo) del ancho de banda frente a la mejora del rendimiento con menos procesamiento de datos en la nube necesario. Considere la posibilidad de usar IoT Hub enriquecimiento de mensajes para agregar contexto a los mensajes del dispositivo.

  • Realice el procesamiento de eventos críticos para el tiempo en los datos ingeridos a medida que llegan, en lugar de almacenar datos no procesados y requerir consultas complejas para adquirir los datos. Para el procesamiento de eventos críticos para el tiempo, tenga en cuenta los impactos de la llegada tardía y la ventana. Evalúe en función del caso de uso, por ejemplo, el control crítico de alarmas frente al enriquecimiento de mensajes.

  • Seleccione el nivel de IoT Hub adecuado, Básico o Estándar, en función de los requisitos de la solución. Tenga en cuenta las características que el nivel Básico no admite.

  • Seleccione el tamaño de nivel IoT Hub derecho, 1, 2 o 3, y el número de instancias en función del rendimiento, las cuotas y las limitaciones de operación de los datos. En IoT Central, seleccione el nivel correcto: Estándar 0, Estándar 1 o Estándar 2, en función del número de mensajes enviados desde dispositivos a la nube.

  • Considere la posibilidad de usar Azure Event Grid para el enrutamiento de eventos de publicación y suscripción. Para obtener más información, consulte React para IoT Hub eventos mediante Event Grid para desencadenar acciones y Comparar el enrutamiento de mensajes y Event Grid para IoT Hub.

Priorización de los datos

Algunos datos que los dispositivos envían a la nube pueden ser más importantes que otros datos. Clasificar y controlar los datos en función de la prioridad es un procedimiento recomendado para la eficiencia del rendimiento.

Por ejemplo, un sensor de termostato envía la temperatura, la humedad y otros datos de telemetría, pero también envía una alarma cuando la temperatura está fuera de un intervalo definido. El sistema clasifica el mensaje de alarma como prioridad más alta y lo controla de forma diferente a la telemetría de temperatura.

Tenga en cuenta las siguientes recomendaciones para la clasificación y el control de datos:

  • Use IoT Edge colas de prioridad para asegurarse de que se priorizan los datos importantes al enviar a IoT Hub. IoT Edge almacena en búfer los mensajes cuando no hay conectividad, pero después de restaurar la conexión, envía primero todos los mensajes almacenados en búfer en orden de prioridad, seguido de nuevos mensajes.

  • Use IoT Hub enrutamiento de mensajes para separar rutas para diferentes prioridades de datos en función del caso de uso. IoT Hub enrutamiento de mensajes agrega cierta latencia.

  • Guarde y envíe datos de prioridad baja a intervalos más largos o mediante cargas por lotes o archivos. La detección de malware en los archivos cargados aumenta la latencia.

  • Separe los mensajes en función de las restricciones de tiempo. Por ejemplo, envíe mensajes a IoT Hub directamente cuando haya una restricción de tiempo y use la carga de archivos a través de IoT Hub o transferencia de datos por lotes, como Azure Data Factory si no hay ninguna restricción de tiempo. Puede usar el módulo de blob IoT Edge para la carga de archivos.

Capa de modelado y administración de dispositivos

Diferentes tipos de dispositivos pueden conectarse a una solución de IoT y una solución de IoT puede conectarse a muchos dispositivos y puertas de enlace al mismo tiempo. Además de conectar y configurar dispositivos y puertas de enlace, la solución de IoT debe comprender los datos que capturan e ingieren los dispositivos y las puertas de enlace, y deben transferir y contextualizar esos datos.

Los componentes de IoT pueden usar diferentes protocolos, conectividad, frecuencias de ingesta de datos y patrones de comunicación. La solución de IoT debe poder administrar qué dispositivos y puertas de enlace están conectados y cómo están configurados.

Para administrar dispositivos y configuraciones para mejorar la eficiencia del rendimiento:

  • Optimice el ajuste de tamaño en función de la carga de mensajes y del dispositivo.

  • Conozca el número de mensajes que la puerta de enlace en la nube puede controlar, en función del nivel y el número de unidades.

  • Tenga en cuenta las anomalías en el rendimiento sostenido debido a la distribución de datos, la estacionalidad y la expansión.

  • Use varias puertas de enlace en la nube cuando la solución de IoT debe administrar millones de dispositivos. Use DPS para asignar dispositivos a centros de IoT.

Aprovisionamiento de dispositivos con DPS

Use DPS para configurar una conexión a un centro de IoT durante el aprovisionamiento, cuando la conexión de IoT Hub ya no esté disponible o durante el reinicio del dispositivo.

  • Use la directiva de distribución ponderada uniformemente de DPS para ajustar el peso del aprovisionamiento, en función del caso de uso. Para más información, consulte How the allocation policy assigns devices to IoT Hubs (Cómo la directiva de asignación asigna dispositivos a IoT Hubs).

  • Considere la posibilidad de aprovisionar dispositivos en la solución de IoT durante un período de tiempo, distribuido o en lotes más pequeños, para equilibrar la carga y la cuota de DPS. Al incorporar en lotes, planee los lotes y la escala de tiempo de migración general. Tenga en cuenta los límites de DPS en el número de operaciones, registros de dispositivos y conexiones máximas por minuto, incluida la latencia y los reintentos.

  • Use DPS para asignar dispositivos a IoT Hubs en diferentes regiones en función de la latencia.

  • Use una estrategia de almacenamiento en caché para el cadena de conexión de DPS para reducir las operaciones de reconexión de DPS.

Administración de dispositivos de bajada

Una solución de IoT es escalable horizontalmente si tiene varias puertas de enlace o dispositivos perimetrales por sitio o ubicación y dispositivos de bajada que pueden conectarse a cualquiera de estas puertas de enlace o dispositivos perimetrales.

  • Use varias puertas de enlace y dispositivos perimetrales en modo de traducción cuando el número de dispositivos de bajada, sus mensajes y tamaños de mensaje cambiarán con el tiempo y su protocolo o mensaje deben traducirse. Las puertas de enlace y los dispositivos perimetrales en el modo de traducción pueden traducir protocolos o mensajes hacia y desde dispositivos de bajada, pero se necesita una asignación para encontrar la puerta de enlace a la que está conectado un dispositivo de bajada. Tenga en cuenta la sobrecarga agregada de traducción de mensajes y almacenamiento en búfer en la puerta de enlace o el dispositivo perimetral cuando se usa el modo de traducción.

  • Use varias puertas de enlace y dispositivos perimetrales en modo transparente para conectar el transporte de telemetría de cola de mensajes de bajada (MQTT) o dispositivos AMQP cuando su número puede cambiar con el tiempo por sitio o ubicación. Las puertas de enlace y los dispositivos perimetrales en modo transparente pueden conectar dispositivos MQTT/AMQP para la comunicación bidireccional. Tenga en cuenta el almacenamiento en búfer de mensajes agregado, el almacenamiento y la sobrecarga de configuración en la puerta de enlace o el dispositivo perimetral cuando se usa el modo transparente.

Nivel de transporte

La capa de transporte controla las conexiones entre un dispositivo y la solución de IoT, lo que transforma los mensajes de IoT en paquetes de red y los envía a través de la red física. Las soluciones de IoT suelen usar protocolos de conexión AMQP y MQTT.

Optimización del uso de recursos

La conexión entre un dispositivo y la nube debe ser segura, confiable y escalable para controlar el número de dispositivos y mensajes de destino.

  • Use una conexión con estado abierta desde un dispositivo a la puerta de enlace en la nube. IoT Hub está optimizado para administrar millones de conexiones con estado abierto mediante protocolos MQTT, AMQP o WebSocket. Mantenga las conexiones abiertas a los dispositivos para minimizar la sobrecarga de protocolos de enlace de seguridad, autenticación y autorización. Esta práctica mejora el rendimiento y reduce considerablemente el ancho de banda necesario.

  • Use un protocolo AMQP que admita la multiplexación de varios canales en una sola conexión para minimizar el número de conexiones abiertas que requiere la puerta de enlace en la nube. Mediante el uso de multiplexación, una puerta de enlace transparente puede conectar varios dispositivos hoja mediante sus propios canales a través de una sola conexión.

  • Use los patrones de puerta de enlace en la nube de dispositivos y módulos gemelos para intercambiar de forma asincrónica información de estado entre dispositivos y la nube.

  • Configure DPS para mover el estado del dispositivo cuando un dispositivo se conecta a otra puerta de enlace en la nube.

Optimización de la comunicación de datos

El número y el tamaño de los mensajes del dispositivo a la nube afectan al rendimiento y al costo. La evaluación de la comunicación de datos es clave para la eficiencia del rendimiento en la carga de trabajo de IoT.

  • Use un formato de datos eficaz y una codificación que no use un ancho de banda extenso para enviar datos a la nube. En el caso de las redes de ancho de banda bajo, considere la posibilidad de usar un formato comprimido o binario, pero comprenda la sobrecarga de descomprimir o convertir los datos en la nube.

  • Considere la posibilidad de almacenar datos de gran volumen localmente y cargarlos cada hora o diariamente.

  • Agrupe muchos mensajes pequeños de dispositivo a nube en menos mensajes más grandes para reducir el número total. Sin embargo, no envíe solo mensajes grandes, sino que equilibre entre el tamaño medio de los mensajes y el rendimiento.

Capa de almacenamiento

Los distintos tipos de datos recopilados y a los que se hace referencia en una solución de IoT suelen requerir tipos de almacenamiento especializados y optimizados para diferentes escenarios en dispositivos, puertas de enlace y nube. Los datos que deben estar disponibles en varias regiones geográficas de forma global o local, y en algunos casos se replican para optimizar la latencia, aumenta la complejidad del almacenamiento de IoT.

  • Use una base de datos de serie temporal para almacenar datos de serie temporal con marcas de tiempo y valores. Enriquecer la telemetría de datos de serie temporal con columnas para filtrar, por ejemplo CustomerID, RoomID u otras columnas específicas del caso de uso.

  • Use el almacenamiento de dispositivo y puerta de enlace para almacenar datos en caché o para mantener los datos cuando se desconecten. Tenga en cuenta el espacio de almacenamiento necesario. No mantenga todos los datos, pero use el muestreo descendente, almacene solo agregados o almacene datos durante períodos de tiempo limitados.

  • Considere la posibilidad de separar la ingesta de datos y el almacenamiento de procesamiento de eventos de las necesidades de almacenamiento de informes e integración.

  • Use el tipo de almacenamiento de datos que se adapte a la necesidad de rendimiento, tamaño, período de retención, volumen de datos, requisitos CRUD y replicación regional. Algunos ejemplos son Azure Data Lake Storage, Azure Data Explorer, Azure SQL y Azure Cosmos DB.

Capa de análisis y procesamiento de eventos

Puede procesar los datos que generan los dispositivos antes de enviarlos a o dentro de la solución de IoT. El procesamiento de datos puede incluir traducción, contextualización, filtrado y enrutamiento, o análisis más avanzados, como el análisis de tendencias o la detección de anomalías.

Optimización del procesamiento perimetral frente a la nube

Ejecute cargas de trabajo en tiempo real y casi en tiempo real, o procesamiento pequeño, optimizado y de baja latencia con restricciones de tiempo, en dispositivos o en el perímetro mediante el proceso local. Ejecute cargas de trabajo más grandes, u otras cargas de trabajo que hayan agregado o externos datos, o dependencias de proceso, en la nube.

Por ejemplo, ejecute un algoritmo de aprendizaje automático en el perímetro para contar personas en una secuencia de vídeo y enviar un evento que contenga el recuento a la nube. Use la nube para comparar tendencias entre diferentes factorías.

Ejecute cargas de trabajo de análisis en el perímetro mediante el módulo perimetral de Stream Analytics. Por ejemplo, puede ejecutar la detección de anomalías en el perímetro y etiquetar los eventos enviados a la nube con la anomalía detectada. Al ejecutar análisis en el perímetro, tenga en cuenta la latencia adicional, la llegada tardía y el impacto en las ventanas.

Tenga en cuenta la sobrecarga de una carga de trabajo perimetral con muchos dispositivos de bajada conectados. El nodo perimetral debe reenviar o procesar todos los mensajes y controlar el almacenamiento en caché de todos los datos si hay conectividad intermitente en la nube. Valide el impacto en el rendimiento de la solución mediante pruebas con el máximo planeado de dispositivos y mensajes de bajada por nodo perimetral. Tenga en cuenta el impacto en el rendimiento que puede tener la traducción o el enriquecimiento de mensajes en el perímetro, IoT Hub o el procesamiento de eventos en la nube.

Categorización de cargas de trabajo individuales

Separa las cargas de trabajo por restricción de tiempo y los tiempos de respuesta y latencia necesarios, por ejemplo, la respuesta en segundos frente al lote por hora. Los sistemas de hardware híbridos en un chip (SoC) pueden admitir cargas de trabajo en el nivel de dispositivo.

En el perímetro, use colas de prioridad para separar diferentes flujos de datos con prioridades y TTL diferentes. Por ejemplo, las alarmas siempre deben enviarse primero, pero tienen un TTL menor que la telemetría.

En la nube, puede usar grupos de consumidores en Azure Event Hubs para separar diferentes flujos de datos y controlar y escalar alarmas de forma diferente de la telemetría. También puede usar IoT Hub rutas para separar diferentes flujos de datos, con filtrado y puntos de conexión independientes. IoT Hub enrutamiento de mensajes agrega cierta latencia. Use Event Hubs, Azure Event Grid o Azure Service Bus para distribuir cargas de trabajo a la vez que protege contra la presión inversa en la nube.

Las reglas de enrutamiento de IoT Hub demasiado complejas pueden afectar al rendimiento, especialmente las reglas de enrutamiento con filtros JSON del cuerpo del mensaje, donde cada mensaje debe deserializarse y examinarse.

Control de datos en la nube de gran volumen

Para optimizar la eficacia del rendimiento de los datos en la nube de gran volumen:

  • Use la integración integrada del servicio entre IoT Hub y destinos de datos como Azure Data Lake Storage y Azure Data Explorer que ya están optimizados para un alto rendimiento.

  • Use el SDK de Event Hubs para desarrollar la ingesta personalizada desde un centro de IoT con el procesador de eventos incluido. El procesador de eventos puede reequilibrar dispositivos y hosts.

  • Use el número correcto de particiones de IoT Hub y grupos de consumidores para el número de lectores de datos simultáneos y el rendimiento necesario.

  • Separe el almacenamiento necesario para la ingesta de datos y el procesamiento de eventos del almacenamiento necesario para la creación de informes e integración.

  • Use el almacenamiento de datos que se adapte a las necesidades en función del rendimiento, el tamaño, el período de retención, el volumen de datos, los requisitos CRUD y la replicación regional. Algunos ejemplos son Azure Data Lake Storage, Azure Data Explorer, Azure SQL o Azure Cosmos DB. Para más información, consulte Selección de un almacén de datos de Azure para la aplicación.

Capa de integración

La capa de integración conecta una solución de IoT a otros servicios y aplicaciones empresariales.

  • Separe la canalización de ingesta de soluciones de IoT del procesamiento de integración. Asegúrese de que las consultas o cargas complejas de la capa de integración no afectan al rendimiento de la ingesta de datos.

  • Use API bien definidas y con versiones para acceder a los datos y comandos de IoT.

  • Evite las herramientas para que los usuarios finales creen consultas definidas por el usuario en el almacenamiento de datos de IoT. Considere la posibilidad de usar almacenes de datos independientes para la integración y para los informes.

Capa de DevOps

Use los siguientes mecanismos de DevOps para maximizar la eficacia del rendimiento:

  • Un registro conectado para el almacenamiento en caché local y la implementación de imágenes de contenedor.

  • IoT Hub actualizar las implementaciones en varios dispositivos a la vez, incluidos los dispositivos y las puertas de enlace.

  • Dispositivos gemelos y módulos gemelos para actualizar las configuraciones de dispositivos de forma escalable y eficaz.

  • Pruebas de rendimiento, incluidas las pruebas de esfuerzo y carga para replicar el entorno de producción, como la ubicación y los dispositivos heterogéneos.

Supervisión

Use Azure Monitor para recopilar métricas de IoT Hub con alertas de métricas críticas. Configure alertas de Azure Monitor basadas en los límites de escala actuales, como los mensajes de dispositivo a nube enviados por segundo. Establezca la alerta en un porcentaje del límite, como el 75 %, para la notificación previa de los próximos límites de escalabilidad. Configure también alertas de Azure Monitor para registros y métricas, como el número de errores de limitación.

Establezca Alertas del servicio Azure Service Health para desencadenar notificaciones cuando cambie IoT Hub estado.

Pasos siguientes