Publicar e assinar mensagens MQTT usando o MQ do Azure IoT (versão prévia)

Importante

O recurso Pré-visualização de Operações do Azure IoT — habilitado pelo Azure Arc — está atualmente em VERSÃO PRÉVIA. Você não deve usar esse software em versão prévia em ambientes de produção.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

O MQ do Azure IoT (versão prévia) conta com um agente MQTT de nível empresarial e compatível com padrões que é escalonável, altamente disponível e nativo do Kubernetes. Ele fornece o plano de mensagens para as Operações do Azure IoT (versão prévia), permite a comunicação bidirecional de borda/nuvem e ativa os aplicativos controlados por eventos na borda.

Compatível com MQTT

O IoT MQ apresenta um MQTT Broker compatível com padrões que dá suporte a MQTT v3.1.1 e MQTT v5.

O MQTT (Transporte de Telemetria da Fila de Mensagens) surgiu como o língua franca entre os protocolos no espaço IoT. O design simples do MQTT permite que um único agente atenda dezenas de milhares de clientes simultaneamente, com uma criação e gerenciamento de tópicos de publicação e gerenciamento leves. Muitos dispositivos IoT dão suporte a MQTT nativamente pronto para uso, com a cauda longa dos protocolos IoT sendo racionalizada em MQTT por gateways de tradução downstream.

O IoT MQ usa o protocolo MQTT como base para a camada de mensagens. Para obter mais informações sobre os recursos do MQTT com suporte, confira Suporte a recursos do MQTT no MQ do Azure IoT (versão prévia).

Altamente disponível e escalonável

O Kubernetes pode dimensionar horizontalmente cargas de trabalho para serem executadas em várias instâncias. Essa redundância significa capacidade adicional para atender a solicitações e confiabilidade no caso de qualquer instância ficar inoperante. O Kubernetes tem a autorrecuperação interna e as instâncias são recuperadas automaticamente.

Além do Kubernetes ser uma tecnologia de dimensionamento elástico, ele também é um padrão para DevOps. Se MQTT for o língua franca entre os protocolos IoT, Kubernetes será o língua franca para a camada de infraestrutura de computação. Ao adotar o Kubernetes, você pode usar o mesmo pipeline de CI/CD, ferramentas, monitoramento, empacotamento de aplicativos, qualificação de funcionários em todos os lugares. O resultado é um único sistema de ponta a ponta da computação em nuvem, servidores locais e gateways de IoT menores no chão de fábrica. Você pode gastar menos tempo lidando com infraestrutura ou DevOps e se concentrar em sua empresa.

O Internet das Coisas do Azure MQ concentra-se no valor exclusivo de plano de dados nativo de borda que ele pode fornecer ao ecossistema do Kubernetes enquanto se encaixa perfeitamente nele. Ele traz plano de plataforma de mensagens escalonável e de alto desempenho criado em torno do MQTT e integração perfeita a outras cargas de trabalho escalonáveis do Kubernetes e ao Azure.

Segurança por padrão

O IoT MQ baseia-se nos conceitos de segurança e identidade nativos do Azure e kubernetes testados, tornando-o altamente seguro e utilizável. Ele dá suporte a vários mecanismos de autenticação para flexibilidade, juntamente com mecanismos de controle de acesso granulares até o nível de tópico MQTT individual.

Integração do Azure Arc

A plataforma híbrida da Microsoft é ancorada no Kubernetes com o Azure Arc como um único plano de controle. Ele fornece um plano de gerenciamento que projeta recursos existentes que não são do Azure, locais ou de outras nuvens no Azure Resource Manager. O resultado é um único painel de controle para gerenciar máquinas virtuais, clusters Kubernetes e bancos de dados que não estão em execução nos data centers do Azure.

O IoT MQ é implantado como uma extensão do Azure Arc para Kubernetes e pode ser gerenciado por meio de um RP (provedor de recursos) do Azure completo – microsoft/IoTOperationsMQ. Isso significa que você pode gerenciá-lo da mesma forma que os recursos nativos de nuvem do Azure, como Máquinas Virtuais, Armazenamento etc.

A tecnologia do Azure Arc permite que as alterações entrem em vigor nos serviços do IoT MQ em execução no cluster Kubernetes local. Opcionalmente, se você preferir uma abordagem totalmente nativa do Kubernetes, poderá gerenciar o IoT MQ com CRDs (definições de recursos personalizados) do Kubernetes localmente ou usando tecnologias GitOps como o Flux.

Conectores de nuvem

Você pode ter requisitos de mensagens diferentes para seu cenário de nuvem. Por exemplo, um caminho rápido bidirecional de nuvem/borda para dados de alta prioridade ou para alimentar painéis de nuvem quase em tempo real e um caminho lento de menor custo para dados menos críticos que podem ser atualizados em lotes.

Para oferecer flexibilidade, o MQ do Azure IoT fornece conectores internos do Azure para os Hubs de Eventos (com ponto de extremidade do Kafka), a funcionalidade de agente MQTT da Grade de Eventos, o Microsoft Fabric e o Armazenamento de Blobs. O IoT MQ é extensível para que você possa escolher sua solução de mensagens de nuvem preferida que funcione com sua solução.

A criação com base no Azure Arc permite que os conectores sejam configurados para usar a Identidade Gerenciada do Azure para acessar os serviços de nuvem com o poderoso RBAC (Controle de Acesso Baseado em Função) do Azure. Não é necessário fazer nenhum gerenciamento manual, não seguro e complicado de credenciais.

Modelo de programação Dapr

O Dapr simplifica o encanamento entre aplicativos distribuídos expondo recursos comuns de aplicativos distribuídos, como gerenciamento de estado, invocação serviço a serviço e mensagens de publicação-assinatura. Os componentes Dapr ficam abaixo dos blocos de construção e fornecem a implementação concreta para cada capacidade. Você pode se concentrar na lógica de negócios e permitir que o Dapr lide com os detalhes do aplicativo distribuído.

O IoT MQ fornece blocos de construção de Distributed Apps Runtime, publicação-assinatura e armazenamento de estado conectáveis, o que facilita o desenvolvimento e a implantação de aplicativos orientados por eventos na borda, além de ser independente de tecnologia.

Arquitetura

O agente MQTT tem três camadas:

  • Camada de front-end sem estado que manipula solicitações de cliente
  • Balanceador de carga que roteia solicitações e conecta o agente a outras pessoas
  • Camada de back-end com estado e fragmentado que armazena e processa dados

A camada de back-end particiona dados por chaves diferentes, como ID do cliente para sessões de cliente e nome do tópico para mensagens de tópico. Ele usa a replicação de cadeia para replicar dados em cada partição. Para dados compartilhados por todas as partições, ele usa uma única cadeia que abrange todas as partições.

Os objetivos da arquitetura são:

  • Tolerância e isolamento de falhas: a publicação de mensagens continuará se os nós de back-end falharem e impedir que falhas se propaguem para o restante do sistema
  • Recuperação de falha: recuperação automática de falha sem intervenção do operador
  • Sem perda de mensagens: entrega de mensagens se pelo menos um nó front-end e um nó de back-end estiver em execução
  • Dimensionamento elástico: dimensionamento horizontal da publicação e assinatura da taxa de transferência para dar suporte a implantações de borda e nuvem
  • Desempenho consistente em escala: limitar a sobrecarga de latência da mensagem devido à replicação em cadeia
  • Simplicidade operacional: dependência mínima em componentes externos para simplificar a manutenção e a complexidade

Próximas etapas

Implantar extensões das Operações do Azure IoT (versão prévia) em um cluster do Kubernetes