Eficiência de desempenho em sua carga de trabalho de IoT

As soluções de IoT incluem componentes de dispositivo, borda e nuvem e variam de milhões de dispositivos pequenos conectados à nuvem a soluções industriais em que alguns servidores avançados são gateways para conectividade de nuvem. O número de dispositivos, seu posicionamento físico e geográfico e o número de mensagens que eles enviam ou recebem são alguns dos fatores que podem definir a eficiência de desempenho de uma carga de trabalho de IoT.

A eficiência de desempenho também inclui a capacidade de uma carga de trabalho de IoT de dimensionar com eficiência para atender às demandas. Um benefício da nuvem é a disponibilidade geográfica e a capacidade de dimensionar serviços sob demanda, com pouco ou nenhum tempo de inatividade do aplicativo.

A eficiência de desempenho representa o desempenho em relação ao uso de recursos em condições declaradas. A eficiência de desempenho mede o quão bem um produto ou sistema, ao executar suas funções, atende aos requisitos para:

  • Comportamento de tempo, como tempos de resposta, tempos de processamento e taxas de taxa de transferência.

  • Utilização de recursos ou quantidades e tipos de recursos usados.

  • Capacidade ou limites máximos.

Avaliar a eficiência de desempenho em sua carga de trabalho de IoT

Para avaliar sua carga de trabalho de IoT por meio das lentes do pilar Well-Architected Framework Performance Efficiency, conclua as perguntas de eficiência de desempenho para cargas de trabalho de IoT na Análise de Well-Architected do Azure. Depois que a avaliação identificar as principais recomendações de eficiência de desempenho para sua solução de IoT, use o conteúdo a seguir para ajudar a implementar as recomendações.

Princípios de design

Cinco pilares de excelência arquitetônica sustentam a metodologia de design de carga de trabalho de IoT. Esses pilares servem como uma bússola para decisões de design subsequentes nas principais áreas de design de IoT. Os princípios de design a seguir estendem o pilar de qualidade do Azure Well-Architected Framework – Eficiência de Desempenho.

Princípio de design Considerações
Design para dimensionamento horizontal Uma solução de IoT pode começar com algumas centenas de dispositivos ou mensagens e aumentar para milhões de dispositivos e mensagens por minuto. Você pode dimensionar facilmente os serviços de nuvem para um aumento na carga, mas a situação pode ser mais complexa para dispositivos IoT e gateways. Os dispositivos IoT podem ser projetados ou implantados antes que a solução seja finalizada. A IoT industrial ou setores semelhantes podem medir a vida útil do dispositivo em décadas. A atualização da capacidade substituindo dispositivos é dispendiosa. Nesses cenários, é especialmente importante planejar com antecedência.
Shift-left no teste de desempenho Teste antecipadamente e teste com frequência para detectar problemas mais cedo. Esteja ciente da complexidade de ter sensores, dispositivos e gateways em locais geograficamente diferentes com diferentes características, velocidade e confiabilidade de comunicação. Planeje essa complexidade em seus testes e teste cenários de falha, como desconexão de rede. Faça testes de estresse e carga de todos os componentes de dispositivo, borda e nuvem em sua solução de IoT.
Monitorar continuamente o desempenho na produção Para monitorar diferentes tipos de dispositivos em várias regiões geográficas, use uma solução de monitoramento distribuído. Equilibre a quantidade de informações monitoradas e enviadas para a nuvem em relação aos custos de memória e desempenho. Ajuste a transmissão para cenários de diagnóstico e monitore em vários níveis e camadas. Expor métricas de gateway para soluções industriais ou habilitadas para gateway.

Camadas da arquitetura de IoT

Os princípios de design de eficiência de desempenho ajudam a esclarecer considerações para garantir que sua carga de trabalho de IoT atenda aos requisitos nas camadas fundamentais da arquitetura de IoT. As seções a seguir abordam as especificidades da camada para o pilar de eficiência de desempenho.

Diagrama que mostra as camadas e as atividades cruzadas na arquitetura de IoT.

Camada de dispositivo e gateway

Um dispositivo IoT é um dispositivo de computação que se conecta a uma solução de IoT e pode coletar, transmitir ou receber dados. Os gateways são pontos de conexão entre dispositivos e a nuvem ou entre IoT e outros componentes.

Otimizar recursos de hardware

Atualizar ou substituir hardware é caro e demorado. Dimensione os dispositivos IoT para a capacidade e a funcionalidade necessárias com antecedência.

Para otimizar os recursos de hardware:

  • Execute tarefas intensivas de computação e saída de entrada em hardware específico. Por exemplo, execute algoritmos de ML (machine learning) em GPUs (unidades de processamento de gráficos) locais.

  • Otimize os recursos de hardware existentes usando linguagens e estruturas eficientes, como Embedded C e Rust Embedded. Você pode usar o SDK do Azure IoT Embedded C ao desenvolver para dispositivos restritos ou quando a maior parte da pilha de segurança e comunicação já estiver disponível no dispositivo.

  • Use o SDK do dispositivo IoT do Azure para C para tudo o que você precisa para se conectar ao gateway de nuvem. Os SDKs (kits de desenvolvimento de software) do Dispositivo IoT do Azure gerenciam a tradução de mensagens, o tratamento de erros e os mecanismos de repetição necessários para uma conexão resiliente.

O dimensionamento é importante para o dispositivo e a camada de gateway. Para dimensionar essa camada:

  • Use gateways como unidades de escala. Se sua solução adicionar dispositivos ou ativos de IoT (por exemplo, servidores OPC UA ) ao longo do tempo, use mais gateways de borda para ingerir dados desses servidores.

  • Realize uma avaliação de escala para todas as camadas de upstream, incluindo gateways de nuvem e serviços de nuvem. Para saber mais sobre como usar vários hubs IoT como unidades de escala para uma solução de IoT, consulte Como provisionar dispositivos entre hubs IoT.

Executar cargas de trabalho na borda

Dependendo das restrições do sistema, como taxa de transferência ou latência de rede, considere a execução de algumas cargas de trabalho na borda. Separe cargas de trabalho por restrição de tempo e tempos de latência e resposta necessários. Use a computação local para cenários de baixa latência e intermitentemente conectados. Execute cargas de trabalho em grande escala na nuvem.

Na borda, use filas de prioridade para enviar fluxos de dados diferentes na ordem necessária. Com as filas de prioridade, as mensagens são enviadas em ordem de prioridade, mas Hub IoT do Azure ainda publica mensagens no diário com base na ordem de recebimento.

Otimizar a conectividade do dispositivo

Considere os seguintes pontos para otimizar a conectividade do dispositivo:

  • Use os Hubs IoT que têm a menor latência para seus dispositivos. Talvez você precise de Hubs IoT em várias regiões quando os dispositivos precisarem se conectar de diferentes localizações geográficas.

  • Use uma conexão com estado aberta para comunicações bidirecionais entre os dispositivos e a solução de IoT para minimizar a sobrecarga de configuração de conexões.

  • Não conecte todos os dispositivos de uma só vez, por exemplo, após uma interrupção de energia regional. Use a retirada exponencial truncada com tremulação introduzida ao tentar novamente.

Otimizar cenários offline

Você pode fornecer aos dispositivos informações e contexto suficientes para funcionar sem uma conexão de nuvem e armazenar dados localmente, para que eles possam se recuperar de desconexões e reinicializações. As estratégias a seguir dão suporte a operações offline:

  • Verifique se o dispositivo é capaz de armazenar dados localmente quando o dispositivo não estiver conectado, incluindo logs e telemetria armazenada em cache de acordo com a prioridade.

  • Defina uma TTL (vida útil) nos dados para que os dados expirados sejam removidos automaticamente.

  • Descarte dados menos importantes quando o dispositivo não estiver conectado, para reduzir o armazenamento local necessário e reduzir o tempo de sincronização quando o dispositivo se reconectar.

  • Se o armazenamento do dispositivo de borda atingir a capacidade, use uma estratégia de remoção de cache, como FIFO (first-in last-out), LIFO (last-in first-out) ou baseado em prioridade.

  • Considere usar um controlador de disco ou disco separado para armazenar dados, de modo que o runtime ou o aplicativo do dispositivo possa continuar funcionando quando estiver com pouco armazenamento.

Use dispositivos gêmeos e módulos gêmeos para sincronizar as informações de estado de forma assíncrona entre os dispositivos e a nuvem, mesmo quando os dispositivos não estiverem conectados ao gateway de nuvem no momento. Dispositivos e módulos gêmeos contêm apenas o estado atual em um ponto no tempo, não qualquer histórico ou informações removidas.

Camada de ingestão e comunicação

A camada de ingestão e comunicação de dados envia dados dos dispositivos para a solução de IoT. Os padrões de comunicação entre dispositivos e a solução de IoT incluem:

  • Mensagens do dispositivo para a nuvem.
  • Mensagens da nuvem para o dispositivo.
  • Uploads de arquivo.
  • Dispositivos gêmeos.
  • Métodos diretos.

Otimizar a eficiência do sistema de mensagens

O número e o tamanho das mensagens do dispositivo para a nuvem é um parâmetro importante para a eficiência de desempenho da solução de IoT. Serviços de IoT do Azure, como Hub IoT e Azure IoT Central, definem limites de mensagens por camada, o que afeta o desempenho e o custo da solução.

Considere as seguintes recomendações de mensagens:

  • Hub IoT e ioT Central calculam contagens diárias de mensagens de cota com base em um tamanho de mensagem de 4 KB. O envio de mensagens menores deixa alguma capacidade não utilizada. Em geral, use tamanhos de mensagem próximos ao limite de 4 KB. Agrupe mensagens de dispositivo para nuvem menores em mensagens maiores para reduzir o número total de mensagens, mas considere a latência introduzida ao combinar mensagens.

  • Evite comunicação tagarela. Para comunicação de borda de dispositivo para dispositivo ou módulo para módulo, não crie interações que enviem muitas mensagens pequenas.

  • Use o envio em lote interno de mensagens do SDK do Azure IoT Edge para o AMQP (Advanced Message Queuing Protocol) para enviar várias mensagens de telemetria para a nuvem.

  • Use o envio em lote no nível do aplicativo combinando várias mensagens menores no dispositivo downstream e enviando mensagens maiores para o gateway de borda. Esse envio em lote limita a sobrecarga da mensagem e reduz as gravações no armazenamento de disco de borda local.

  • Use o multiplexação de conexão AMQP para reduzir a dependência dos limites de conexões TCP (Protocolo de Controle de Transmissão) por cliente do SDK. Com o multiplexatório de conexão AMQP, vários dispositivos podem usar uma única conexão TCP para Hub IoT.

  • Use métodos diretos para interações solicitação-resposta que podem ter êxito ou falhar imediatamente, após um tempo limite especificado pelo usuário. Essa abordagem é útil para cenários em que o curso da ação é diferente dependendo se o dispositivo respondeu.

  • Use dispositivos gêmeos para obter informações de estado do dispositivo, incluindo metadados e configurações. Hub IoT mantém um dispositivo gêmeo para cada dispositivo que você conectar.

Entender as cotas de mensagens e a limitação

A camada Hub IoT define limites de gateway de nuvem por unidade. A cota de mensagens define a taxa de transferência sustentada e as taxas de envio sustentadas para a camada. Hub IoT pode lidar com cargas acima dessas cotas por curtas durações para manipular com resiliência intermitências ou sobressuções de carga.

Outro limite importante é o limite de carga ou limitação de serviço por hora ou diária. Os limites de limitação protegem um hub IoT de muita carga por muito tempo.

Os diagramas a seguir mostram a relação entre os limites de carga, cota e limitação. O diagrama à esquerda mostra que Hub IoT pode lidar com a carga alta sustentada ou constante até o nível da cota para a camada Hub IoT. O diagrama correto mostra que Hub IoT pode lidar com a carga que está mudando ao longo do tempo, desde que não atinja o limite de limitação e, em média, não esteja acima da cota para a camada de Hub IoT.

Diagrama à esquerda mostrando a alta carga constantemente abaixo da cota. Em comparação com o diagrama correto que mostra uma carga mais baixa com picos ocasionais.

Otimizar o processamento de mensagens

As mensagens de um dispositivo ou gateway podem precisar ser traduzidas, processadas ou enriquecidas com mais informações antes do armazenamento. Essa etapa pode ser demorada, portanto, é importante avaliar o efeito sobre o desempenho. Algumas recomendações entram em conflito, como o uso da compactação para otimizar a transferência de dados em vez de evitar o processamento de nuvem na descriptografia de mensagens. Essas recomendações precisam ser equilibradas e avaliadas em relação a outros pilares arquitetônicos e requisitos de solução.

Para otimizar o desempenho do processamento de dados na nuvem:

  • Otimize o formato de dados usado para enviar dados para a nuvem. Compare o desempenho (e o custo) da largura de banda versus a melhoria de desempenho com menos processamento de dados de nuvem necessário. Considere usar Hub IoT enriquecimento de mensagens para adicionar contexto às mensagens do dispositivo.

  • Faça o processamento de eventos críticos em dados ingeridos à medida que eles chegam, em vez de armazenar dados não processados e exigir consultas complexas para adquirir os dados. Para o processamento de eventos críticos ao tempo, considere os impactos da chegada tardia e da janela. Avalie dependendo do caso de uso, por exemplo, tratamento crítico de alarme versus enriquecimento de mensagens.

  • Selecione a camada de Hub IoT direita, Básica ou Standard, com base nos requisitos da solução. Lembre-se dos recursos aos quais a camada Básica não dá suporte.

  • Selecione o tamanho certo Hub IoT camada, 1, 2 ou 3 e o número de instâncias com base na taxa de transferência de dados, cotas e limitações de operação. Para o IoT Central, selecione a camada certa: Standard 0, Standard 1 ou Standard 2, com base no número de mensagens enviadas de dispositivos para a nuvem.

  • Considere usar Grade de Eventos do Azure para roteamento de eventos publish-subscribe. Para obter mais informações, consulte React para Hub IoT eventos usando a Grade de Eventos para disparar ações e Comparar roteamento de mensagens e Grade de Eventos para Hub IoT.

Priorizar dados

Alguns dados que os dispositivos enviam para a nuvem podem ser mais importantes do que outros dados. Classificar e lidar com os dados com base na prioridade é uma boa prática para a eficiência do desempenho.

Por exemplo, um sensor de termostato envia temperatura, umidade e outras telemetrias, mas também envia um alarme quando a temperatura está fora de um intervalo definido. O sistema classifica a mensagem de alarme como prioridade mais alta e a manipula de forma diferente da telemetria de temperatura.

Considere as seguintes recomendações para classificação e tratamento de dados:

  • Use IoT Edge filas de prioridade para garantir que dados importantes sejam priorizados durante o envio para Hub IoT. IoT Edge armazena mensagens em buffer quando não há conectividade, mas depois que a conexão é restaurada, envia todas as mensagens armazenadas em buffer na ordem de prioridade primeiro, seguidas por novas mensagens.

  • Use Hub IoT roteamento de mensagens para separar rotas para diferentes prioridades de dados, dependendo do caso de uso. Hub IoT roteamento de mensagens adiciona alguma latência.

  • Salve e envie dados de baixa prioridade em intervalos mais longos ou usando carregamentos de lote ou arquivo. A detecção de malware em arquivos carregados aumenta a latência.

  • Separar mensagens com base em restrições de tempo. Por exemplo, envie mensagens para Hub IoT diretamente quando houver uma restrição de tempo e utilize o upload de arquivos por meio de Hub IoT ou transferência de dados em lote, como Azure Data Factory se não houver restrição de tempo. Você pode usar o módulo de blob IoT Edge para upload de arquivo.

Camada de modelagem e gerenciamento de dispositivo

Diferentes tipos de dispositivos podem se conectar a uma solução de IoT e uma solução de IoT pode se conectar a muitos dispositivos e gateways ao mesmo tempo. Além de conectar e configurar dispositivos e gateways, a solução de IoT deve entender os dados que os dispositivos e gateways capturam e ingerem e devem transferir e contextualizar esses dados.

Os componentes de IoT podem usar diferentes protocolos, conectividade, frequências de ingestão de dados e padrões de comunicação. A solução de IoT deve ser capaz de gerenciar quais dispositivos e gateways estão conectados e como eles estão configurados.

Para gerenciar dispositivos e configurações para eficiência de desempenho:

  • Otimize o dimensionamento com base no dispositivo e no carregamento de mensagens.

  • Saiba o número de mensagens que o gateway de nuvem pode manipular, dependendo da camada e do número de unidades.

  • Contabilize anomalias na taxa de transferência sustentada devido à distribuição de dados, sazonalidade e intermitência.

  • Use vários gateways de nuvem quando a solução de IoT precisar gerenciar milhões de dispositivos. Use o DPS para atribuir dispositivos a hubs IoT.

Provisionar dispositivos com DPS

Use o DPS para configurar uma conexão com um hub IoT durante o provisionamento, quando a conexão Hub IoT não estiver mais disponível ou durante a reinicialização do dispositivo.

  • Use a política de distribuição uniformemente ponderada do DPS para ajustar o peso do provisionamento, com base no caso de uso. Para obter mais informações, consulte Como a política de alocação atribui dispositivos aos Hubs IoT.

  • Considere o provisionamento de dispositivos para a solução de IoT durante um período de tempo, distribuído ou em lotes menores, para equilibrar a carga e a cota do DPS. Ao integrar em lotes, planeje os lotes e a migração geral linha do tempo. Contabilize os limites de DPS em número de operações, registros de dispositivo e conexões máximas por minuto, incluindo latência e repetições.

  • Use o DPS para alocar dispositivos para Hubs IoT em regiões diferentes com base na latência.

  • Use uma estratégia de cache para o cadeia de conexão DPS para reduzir as operações de reconexão do DPS.

Gerenciar dispositivos downstream

Uma solução de IoT será horizontalmente escalonável se tiver vários gateways ou dispositivos de borda por site ou local e dispositivos downstream que possam se conectar a qualquer um desses gateways ou dispositivos de borda.

  • Use vários gateways e dispositivos de borda no modo de tradução quando o número de dispositivos downstream, suas mensagens e tamanhos de mensagem forem alterados ao longo do tempo e seu protocolo ou mensagem precisar ser traduzido. Gateways e dispositivos de borda no modo de tradução podem traduzir protocolos ou mensagens de e para dispositivos downstream, no entanto, um mapeamento é necessário para localizar o gateway ao qual um dispositivo downstream está conectado. Conta para a tradução de mensagens adicionada e sobrecarga de buffer no gateway ou dispositivo de borda quando você usa o modo de tradução.

  • Use vários gateways e dispositivos de borda no modo transparente para conectar dispositivos MQTT (Transporte telemétrico de fila de mensagens downstream) ou AMQP quando seu número pode ser alterado ao longo do tempo por site ou local. Gateways e dispositivos de borda no modo transparente podem conectar dispositivos MQTT/AMQP para comunicação bidirecional. Conta para adição de buffer de mensagens, armazenamento e sobrecarga de configuração no gateway ou dispositivo de borda quando você usa o modo transparente.

Camada de transporte

A camada de transporte lida com conexões entre um dispositivo e a solução de IoT, transformando mensagens de IoT em pacotes de rede e enviando-as pela rede física. As soluções de IoT geralmente usam protocolos de conexão AMQP e MQTT.

Otimizar o uso de recursos

A conexão entre um dispositivo e a nuvem precisa ser segura, confiável e escalonável para lidar com o número direcionado de dispositivos e mensagens.

  • Use uma conexão com estado aberta de um dispositivo para o gateway de nuvem. Hub IoT é otimizado para gerenciar milhões de conexões abertas com estado usando protocolos MQTT, AMQP ou WebSocket. Mantenha as conexões abertas com os dispositivos para minimizar a sobrecarga de handshakes de segurança, autenticação e autorização. Essa prática melhora o desempenho e reduz consideravelmente a largura de banda necessária.

  • Use um protocolo AMQP que dê suporte à multiplexação de vários canais em uma única conexão para minimizar o número de conexões abertas necessárias pelo gateway de nuvem. Usando multiplexação, um gateway transparente pode conectar vários dispositivos folha usando seus próprios canais em uma única conexão.

  • Use os padrões de gateway de nuvem de dispositivos e módulos gêmeos para trocar de forma assíncrona informações de estado entre dispositivos e a nuvem.

  • Configure o DPS para mover o estado do dispositivo quando um dispositivo se conectar a outro gateway de nuvem.

Otimizar a comunicação de dados

O número e o tamanho das mensagens do dispositivo para a nuvem afetam o desempenho e o custo. Avaliar a comunicação de dados é fundamental para a eficiência do desempenho em sua carga de trabalho de IoT.

  • Use um formato de dados eficiente e uma codificação que não usa largura de banda extensa para enviar dados para a nuvem. Para redes de baixa largura de banda, considere usar um formato compactado ou binário, mas entenda a sobrecarga de descompactar ou converter os dados na nuvem.

  • Considere armazenar dados de alto volume localmente e carregá-los por hora ou diariamente.

  • Agrupe muitas mensagens pequenas do dispositivo para a nuvem em menos mensagens maiores para reduzir o número total. No entanto, não envie apenas mensagens grandes, mas o equilíbrio entre o tamanho médio da mensagem e a taxa de transferência.

Camada de armazenamento

Os diferentes tipos de dados coletados e referenciados em uma solução de IoT geralmente exigem tipos de armazenamento especializados e otimizados para diferentes cenários em dispositivos, gateways e nuvem. Os dados que devem estar disponíveis em várias regiões geográficas global ou localmente e, em alguns casos, replicados para otimizar a latência, aumentam a complexidade do armazenamento de IoT.

  • Use um banco de dados de série temporal para armazenar dados de série temporal que têm carimbos de data/hora e valores. Enriqueça a telemetria de dados de série temporal com colunas para filtragem, por exemplo, CustomerID, RoomID ou outras colunas específicas de caso de uso.

  • Use o armazenamento de dispositivos e gateways para armazenar dados em cache ou para manter os dados quando desconectados. Conta para o espaço de armazenamento necessário. Não mantenha todos os dados, mas use downsampling, armazene apenas agregações ou armazene dados por períodos de tempo limitados.

  • Considere separar a ingestão de dados e o armazenamento de processamento de eventos das necessidades de armazenamento de integração e relatórios.

  • Use o tipo de armazenamento de dados que atenda à necessidade de taxa de transferência, tamanho, período de retenção, volume de dados, requisitos CRUD e replicação regional necessários. Alguns exemplos são Azure Data Lake Storage, Data Explorer do Azure, SQL do Azure e Azure Cosmos DB.

Camada de processamento e análise de eventos

Você pode processar dados que os dispositivos geram antes de enviá-los para ou dentro da solução de IoT. O processamento de dados pode incluir tradução, contextualização, filtragem e roteamento ou análises mais avançadas, como análise de tendência ou detecção de anomalias.

Otimizar o processamento de borda versus nuvem

Execute cargas de trabalho em tempo real e quase em tempo real ou processamento pequeno, otimizado e de baixa latência com restrições de tempo, em dispositivos ou na borda usando a computação local. Execute cargas de trabalho maiores ou outras cargas de trabalho que adicionaram ou dados externos, ou dependências de computação, na nuvem.

Por exemplo, execute um algoritmo de aprendizado de máquina na borda para contar pessoas em um fluxo de vídeo e enviar um evento que contém a contagem para a nuvem. Use a nuvem para comparar tendências entre fábricas diferentes.

Execute cargas de trabalho de análise na borda usando o módulo do Stream Analytics Edge. Por exemplo, você pode executar a detecção de anomalias na borda e rotular os eventos enviados para a nuvem com a anomalia detectada. Quando você executa a análise na borda, contabilize a latência extra, a chegada em atraso e o impacto nas janelas.

Esteja ciente da sobrecarga de uma carga de trabalho de borda com muitos dispositivos downstream conectados. O nó de borda deve encaminhar ou processar todas as mensagens e manipular o cache de todos os dados se houver conectividade intermitente na nuvem. Valide o impacto no desempenho em sua solução testando com o máximo planejado de dispositivos downstream e mensagens por nó de borda. Lembre-se do impacto no desempenho que a tradução ou o enriquecimento de mensagens podem ter no processamento de eventos de borda, Hub IoT ou na nuvem.

Categorizar cargas de trabalho individuais

Separe cargas de trabalho por restrição de tempo e tempos de latência e resposta necessários, por exemplo, resposta em segundos versus lote por hora. SoCs (sistemas de hardware híbridos) podem dar suporte a cargas de trabalho no nível do dispositivo.

Na borda, use filas de prioridade para separar diferentes fluxos de dados com prioridades diferentes e TTL. Por exemplo, os alarmes sempre devem ser enviados primeiro, mas têm um TTL menor do que a telemetria.

Na nuvem, você pode usar grupos de consumidores em Hubs de Eventos do Azure para separar diferentes fluxos de dados e manipular e dimensionar alarmes de forma diferente da telemetria. Você também pode usar Hub IoT rotas para separar diferentes fluxos de dados, com filtragem e pontos de extremidade separados. Hub IoT roteamento de mensagens adiciona alguma latência. Use Hubs de Eventos, Grade de Eventos do Azure ou Barramento de Serviço do Azure para distribuir cargas de trabalho enquanto protege contra pressão na nuvem.

Regras de roteamento de Hub IoT excessivamente complexas podem afetar a taxa de transferência, especialmente regras de roteamento com filtros JSON do corpo da mensagem, em que cada mensagem precisa ser desserializada e verificada.

Manipular dados de nuvem de alto volume

Para otimizar a eficiência de desempenho para dados de nuvem de alto volume:

  • Use a integração de serviço pronta para uso entre Hub IoT e destinos de dados, como Azure Data Lake Storage e Data Explorer do Azure que já estão otimizados para taxa de transferência de alto desempenho.

  • Use o SDK dos Hubs de Eventos para desenvolver ingestão personalizada de um hub IoT com o processador de eventos incluído. O processador de eventos pode reequilibrar dispositivos e hosts.

  • Use o número certo de partições Hub IoT e grupos de consumidores para o número de leitores de dados simultâneos e a taxa de transferência necessária.

  • Separe o armazenamento necessário para ingestão de dados e processamento de eventos do armazenamento necessário para relatórios e integração.

  • Use o armazenamento de dados que atenda às necessidades com base na taxa de transferência, tamanho, período de retenção, volume de dados, requisitos CRUD e replicação regional necessários. Exemplos são Azure Data Lake Storage, Data Explorer do Azure, SQL do Azure ou Azure Cosmos DB. Para obter mais informações, consulte Selecionar um armazenamento de dados do Azure para seu aplicativo.

Camada de integração

A camada de integração conecta uma solução de IoT a outros serviços e aplicativos de negócios.

  • Separe o pipeline de ingestão da solução de IoT do processamento de integração. Verifique se as consultas ou cargas complexas da camada de integração não afetam o desempenho da ingestão de dados.

  • Use APIs bem definidas e com controle de versão para acessar dados e comandos de IoT.

  • Evite ferramentas para que os usuários finais criem consultas definidas pelo usuário no armazenamento de dados de IoT. Considere usar armazenamentos de dados separados para integração e relatórios.

Camada de DevOps

Use os seguintes mecanismos de DevOps para maximizar a eficiência de desempenho:

  • Um registro conectado para cache local e implantação de imagens de contêiner.

  • Hub IoT atualizar implantações para vários dispositivos ao mesmo tempo, incluindo dispositivos e gateways.

  • Dispositivos gêmeos e módulos gêmeos para atualizar as configurações do dispositivo de maneira escalonável e eficiente.

  • Testes de desempenho, incluindo testes de estresse e carga para replicar o ambiente de produção, como localização e dispositivos heterogêneos.

Monitoramento

Use o Azure Monitor para coletar Hub IoT métricas com alertas para métricas críticas. Configure alertas do Azure Monitor com base nos limites de escala atuais, como mensagens de dispositivo para nuvem enviadas por segundo. Defina o alerta como um percentual do limite, como 75%, para a pré-notificação dos próximos limites de escalabilidade. Configure também alertas do Azure Monitor para logs e métricas, como o número de erros de limitação.

Defina alertas do serviço de Integridade do Serviço do Azure para disparar notificações quando Hub IoT status alterações.

Próximas etapas