Visão geral do recurso de agente MQTT na Grade de Eventos do Azure
A Grade de Eventos do Azure permite que seus clientes MQTT se comuniquem entre si e com os serviços do Azure, para dar suporte às suas soluções de Internet das Coisas (IoT).
O recurso de agente MQTT da Grade de Eventos do Azure permite que você realize os seguintes cenários:
- Ingerir telemetria usando um padrão de mensagens muitos-para-um. Esse padrão permite que o aplicativo alivie a carga de gerenciar o alto número de conexões com dispositivos para a Grade de Eventos.
- Controle seus clientes MQTT usando o padrão de mensagens solicitação-resposta (um-para-um). Esse padrão permite que qualquer cliente se comunique com qualquer outro cliente sem restrições, independentemente das funções dos clientes.
- Transmita alertas para uma frota de clientes usando o padrão de mensagens um-para-muitos. Esse padrão permite que o aplicativo publique apenas uma mensagem que o serviço replica para cada cliente interessado.
- Integre dados de seus clientes MQTT roteando mensagens MQTT para serviços do Azure e Webhooks por meio da funcionalidade de entrega HTTP Push. Essa integração com os serviços do Azure permite que você crie pipelines de dados que começam com a ingestão de dados de seus dispositivos IoT.
Você pode encontrar exemplos de código que demonstram esses cenários neste repositório.
O broker MQTT é ideal para a implementação de cenários automotivos e de mobilidade, entre outros. Consulte a arquitetura de referência para saber como criar soluções seguras e escaláveis para conectar milhões de veículos à nuvem, usando os serviços de mensagens e análise de dados do Azure.
Conceitos-chave
A seguir está uma lista dos principais conceitos envolvidos no recurso de agente MQTT da Grade de Eventos do Azure.
MQTT
O MQTT é um protocolo de transporte de mensagens de publicação-assinatura que foi projetado para ambientes restritos. É o padrão de comunicação ideal para cenários de IoT devido à eficiência, escalabilidade e confiabilidade. O broker MQTT permite que os clientes publiquem e assinem mensagens sobre protocolos MQTT v3.1.1, MQTT v3.1.1 sobre WebSockets, MQTT v5 e MQTT v5 sobre WebSockets. A lista a seguir mostra alguns dos destaques de recursos do broker MQTT:
Características do MQTT v5:
- O Last Will and Testament (LWT) notifica seus clientes MQTT com as desconexões abruptas de outros clientes MQTT. Você pode usar o LWT para garantir um fluxo previsível e confiável de comunicação entre clientes MQTT durante desconexões inesperadas.
- As propriedades do usuário permitem que você adicione pares chave-valor personalizados no cabeçalho da mensagem para fornecer mais contexto sobre a mensagem. Por exemplo, inclua a finalidade ou a origem da mensagem para que o recetor possa lidar com a mensagem de forma eficiente.
- O padrão solicitação-resposta permite que seus clientes aproveitem o padrão assíncrono de solicitação-resposta padrão, especificando o tópico de resposta e o ID de correlação na solicitação para que o cliente responda sem configuração prévia.
- O intervalo de expiração da mensagem permite que você declare ao corretor MQTT quando ignorar uma mensagem que não é mais relevante ou válida. Por exemplo, desconsidere comandos ou alertas obsoletos.
- Os aliases de tópico ajudam seus clientes a reduzir o tamanho do campo de tópico, tornando a transferência de dados menos dispendiosa.
- O tamanho máximo da mensagem permite que seus clientes controlem o tamanho máximo de mensagem que eles podem manipular a partir do servidor.
- O Receive Maximum permite que seus clientes controlem a taxa de mensagens dependendo de seus recursos, como velocidade de processamento ou recursos de armazenamento.
- O início limpo e a expiração da sessão permitem que seus clientes otimizem a confiabilidade e a segurança da sessão, preservando as informações e mensagens de assinatura do cliente por um intervalo de tempo configurável.
- Os reconhecimentos negativos permitem que os seus clientes reajam de forma eficiente a diferentes códigos de erro.
- Os pacotes de desconexão enviados pelo servidor permitem que seus clientes lidem com desconexões de forma eficiente.
O corretor MQTT está adicionando mais recursos MQTT v5 no futuro para se alinhar mais com as especificações MQTT. Os itens a seguir detalham as diferenças atuais entre os recursos suportados pelo broker MQTT e as especificações MQTT v5: Mensagem de vontade, Sinalizador de retenção, Ordem de mensagem e QoS 2 não são suportados.
Características do MQTT v3.1.1:
- O Last Will and Testament (LWT) notifica seus clientes MQTT com as desconexões abruptas de outros clientes MQTT. Você pode usar o LWT para garantir um fluxo previsível e confiável de comunicação entre clientes MQTT durante desconexões inesperadas.
- As sessões persistentes garantem a confiabilidade preservando as informações e mensagens de assinatura do cliente quando um cliente se desconecta.
- QoS 0 e 1 fornecem aos seus clientes o controle sobre a eficiência e confiabilidade da comunicação.
O corretor MQTT está adicionando mais recursos MQTT v3.1.1 no futuro para se alinhar mais com as especificações MQTT. Os itens a seguir detalham as diferenças atuais entre os recursos suportados pelo broker MQTT e a especificação MQTT v3.1.1: Manter sinalizador, Ordenação de mensagens e QoS 2 não são suportados.
Saiba mais sobre o broker MQTT e as limitações atuais.
Modelo de mensagens Publicar-Subscrever
O modelo de mensagens de publicação-assinatura fornece uma comunicação escalável e assíncrona para os clientes. Ele permite que os clientes aliviem a carga de lidar com um grande número de conexões e mensagens para o serviço. Por meio do modelo de mensagens Publicar-Assinar, seus clientes podem se comunicar de forma eficiente usando padrões de mensagens um-para-muitos, muitos-para-um e um-para-um.
- O padrão de mensagens um-para-muitos permite que os clientes publiquem apenas uma mensagem que o serviço replica para cada cliente interessado.
- O padrão de mensagens muitos-para-um permite que os clientes aliviem o fardo de gerenciar o alto número de conexões com o broker MQTT.
- O padrão de mensagens um-para-um permite que qualquer cliente se comunique com qualquer outro cliente sem restrições, independentemente das funções dos clientes.
Espaço de Nomes
Event Grid Namespace é um contêiner de gerenciamento para os recursos que suportam a funcionalidade do broker MQTT, juntamente com os recursos que suportam a funcionalidade pull delivery. Seu cliente MQTT pode se conectar ao broker MQTT e publicar/assinar mensagens, enquanto o broker MQTT autentica seus clientes, autoriza solicitações de publicação/assinatura e encaminha mensagens para clientes interessados. Saiba mais sobre o conceito de namespace.
Clientes
Os clientes referem-se a dispositivos ou aplicativos IoT que publicam e assinam mensagens MQTT.
Os dispositivos IoT são objetos físicos conectados à internet para transmitir telemetria e receber comandos. Esses dispositivos podem ser sensores, aparelhos, máquinas ou outros objetos equipados com sensores e software incorporados. Os sensores e o software permitem-lhes comunicar e interagir uns com os outros e com o ambiente que os rodeia. O valor dos dispositivos IoT reside na sua capacidade de fornecer dados e insights em tempo real, permitindo que empresas e indivíduos tomem decisões informadas e melhorem a eficiência e a produtividade.
Os aplicativos IoT são softwares projetados para interagir e processar dados de dispositivos IoT. Eles geralmente incluem componentes como coleta, processamento, armazenamento, visualização e análise de dados. Esses aplicativos permitem que os usuários monitorem e controlem dispositivos conectados, automatizem tarefas e obtenham insights dos dados gerados por dispositivos IoT.
Autenticação de cliente
A Grade de Eventos tem um registro de cliente que armazena informações sobre os clientes autorizados a se conectar a ela. Antes que um cliente possa se conectar, deve haver uma entrada para esse cliente no registro do cliente. À medida que um cliente se conecta ao broker MQTT, ele precisa se autenticar com o broker MQTT com base nas credenciais armazenadas no registro de identidade. O broker MQTT suporta os seguintes mecanismos de autenticação de cliente:
- Autenticação de certificado X.509, que é o padrão de autenticação do setor em dispositivos IoT.
- Microsoft Entra IDauthentication, que é o padrão de autenticação do Azure para aplicativos. Saiba mais sobre a autenticação de cliente MQTT.
- Autenticação OAuth 2.0 (JSON Web Token), que fornece uma opção leve, segura e flexível para clientes MQTT que não são provisionados no Azure.
Controlo de acesso
O controle de acesso é crítico para cenários de IoT, considerando a enorme escala de ambientes de IoT e os desafios de segurança exclusivos de dispositivos restritos. A Grade de Eventos oferece RBAC (Controle de Acesso Baseado em Função) por meio de um modelo de controle de acesso flexível que permite gerenciar a autorização de clientes para publicar ou assinar tópicos.
Dada a enorme escala de ambientes IoT, atribuir permissão para cada cliente para cada tópico é incrivelmente tedioso. O controle de acesso flexível da Event Grid enfrenta esse desafio de escala agrupando clientes e tópicos em grupos de clientes e espaços de tópicos. Depois de criar grupos de clientes e espaços de tópicos, você pode configurar uma associação de permissão para conceder acesso a um grupo de clientes para publicar ou assinar um espaço de tópico.
Os espaços de tópico também fornecem controle de acesso granular, permitindo que você controle a autorização de cada cliente dentro de um grupo de clientes para publicar ou assinar seu próprio tópico. Esse controle de acesso granular é obtido usando variáveis em modelos de tópico. Saiba mais sobre controle de acesso.
Encaminhamento
A Grade de Eventos permite que você roteie suas mensagens MQTT para serviços do Azure ou webhooks para processamento posterior. Assim, você pode criar soluções de ponta a ponta usando seus dados de IoT para análise, armazenamento e visualizações de dados, entre outros casos de uso. A configuração de roteamento permite que você envie todas as suas mensagens MQTT de seus clientes para um tópico de namespace de Grade de Eventos ou um tópico personalizado de Grade de Eventos. Quando as mensagens estiverem no tópico, você poderá configurar uma assinatura de evento para consumir as mensagens do tópico. Por exemplo, essa funcionalidade permite que você use a Grade de Eventos para rotear a telemetria de seus dispositivos IoT para Hubs de Eventos e, em seguida, para o Azure Stream Analytics para obter informações da telemetria do dispositivo. Saiba mais sobre roteamento.
Integração do agente MQTT Edge
A Grade de Eventos integra-se ao Azure IoT MQ para unir sua capacidade de agente MQTT na borda com o recurso de agente MQTT da Grade de Eventos do Azure na nuvem. O Azure IoT MQ é um novo agente MQTT distribuído para computação de borda, executado em clusters Kubernetes habilitados para Arc. Ele pode se conectar ao agente MQTT da Grade de Eventos com a autenticação Microsoft Entra ID (anteriormente Azure Ative Directory) usando a identidade gerenciada atribuída ao sistema, o que simplifica o gerenciamento de credenciais. O Azure IoT MQ fornece alta disponibilidade, escalabilidade e segurança para seus dispositivos e aplicativos IoT. Agora está disponível em pré-visualização pública como parte das Operações IoT do Azure. Saiba mais sobre como conectar o Azure IoT MQ ao agente MQTT da Grade de Eventos do Azure.
Eventos do ciclo de vida dos clientes MQTT
Os eventos do Ciclo de Vida do Cliente permitem que os aplicativos reajam a eventos sobre o status da conexão do cliente ou as operações de recursos do cliente. Ele permite que você acompanhe o status da conexão do cliente, reaja com uma ação de mitigação para desconexões do cliente e rastreie o namespace ao qual seus clientes estão conectados durante failovers automatizados. Saiba mais sobre os Eventos do Ciclo de Vida do Cliente MQTT.
Nomes de domínio personalizados
O suporte a nomes de domínio personalizados permite que os usuários atribuam seus próprios nomes de domínio aos pontos de extremidade MQTT e HTTP do namespace Event Grid, aumentando a segurança e simplificando a configuração do cliente. Esse recurso ajuda as empresas a atender aos seus requisitos de segurança e conformidade e elimina a necessidade de modificar clientes já vinculados ao domínio. A atribuição de um nome de domínio personalizado a vários namespaces também pode ajudar a melhorar a disponibilidade, gerenciar a capacidade e lidar com a mobilidade de clientes entre regiões. Saiba mais sobre Nomes de domínio personalizados.
Próximos passos
Use os artigos a seguir para saber mais sobre o broker MQTT e seus principais conceitos.
- Publicar e assinar mensagens MQTT
- Tutorial: Encaminhar mensagens MQTT para Hubs de Eventos do Azure usando tópicos de namespace
- Tutorial: Encaminhar mensagens MQTT para o Azure Functions usando tópicos personalizados
Conceitos
- Terminologia
- Autenticação do cliente
- Controlo de acesso
- Suporte ao protocolo MQTT
- Roteamento de mensagens MQTT
- Eventos do Ciclo de Vida do Cliente MQTT.