Entenda os módulos do Azure IoT Edge

Aplica-se a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

O Azure IoT Edge permite que você implante e gerencie a lógica de negócios no Edge na forma de módulos. Os módulos do Azure IoT Edge são a menor unidade de computação gerenciada pelo IoT Edge e podem conter serviços do Azure (por exemplo, o Azure Stream Analytics) ou seu próprio código específico à solução. Para entender como os módulos são desenvolvidos, implantados e mantidos, considere os quatro elementos conceituais de um módulo:

  • Uma imagem de módulo é um pacote contendo o software que define um módulo.
  • Uma instância de módulo é a unidade específica de computação que executa a imagem de módulo em um dispositivo com IoT Edge. A instância de módulo é iniciada pelo runtime do IoT Edge.
  • Uma identidade do módulo é uma informação (incluindo as credenciais de segurança) armazenada no Hub IoT, que está associada a cada instância de módulo.
  • Um módulo gêmeo é um documento JSON armazenado no Hub IoT e contém informações de estado para uma instância de módulo, incluindo metadados, configurações e condições.

Instâncias e imagens de módulo

As imagens de módulo do IoT Edge contêm aplicativos que tiram proveito dos recursos de comunicação, segurança e gerenciamento do runtime do IoT Edge. Você pode desenvolver suas próprias imagens de módulo ou exportar uma de um serviço do Azure com suporte, como o Azure Stream Analytics. As imagens existem na nuvem e podem ser atualizadas, alteradas e implantadas em diferentes soluções. Por exemplo, um módulo que usa aprendizado de máquina para prever a saída da linha de produção como uma imagem separada, em comparação com um módulo que usa a visão do computador para controlar um drone.

Sempre que uma imagem de módulo é implantada em um dispositivo e iniciada pelo runtime do IoT Edge, uma nova instância desse módulo é criada. Dois dispositivos em diferentes partes do mundo podem usar a mesma imagem de módulo. No entanto, cada dispositivo terá sua própria instância de módulo quando o módulo for iniciado no dispositivo.

Diagram - Module images in cloud, module instances on devices

Na implementação, as imagens de módulos existem como imagens de contêiner em um repositório, e as instâncias de módulo são contêineres em dispositivos.

Identidades de módulo

Quando uma nova instância de módulo é criada pelo runtime do IoT Edge, ela é associada a uma identidade de módulo correspondente. A identidade de módulo é armazenada no Hub IoT e utilizada como o escopo de endereçamento e segurança para todas as comunicações locais e de nuvem dessa instância de módulo.

A identidade associada a uma instância de módulo depende da identidade do dispositivo no qual a instância está em execução, e do nome fornecido para esse módulo em sua solução. Por exemplo, se você chamar insight um módulo que usa um Azure Stream Analytics e implantá-lo em um dispositivo chamado Hannover01, o runtime do IoT Edge criará uma identidade de módulo correspondente chamada /devices/Hannover01/modules/insight.

Claramente, em cenários nos quais você precisa implantar uma imagem de módulo várias vezes no mesmo dispositivo, é possível implantar a mesma imagem várias vezes com nomes diferentes.

Diagram - Module identities are unique within devices and across devices

Módulos gêmeos

Cada instância de módulo também tem um módulo gêmeo correspondente que você pode usar para configurar a instância de módulo. A instância e o gêmeo são associados entre si por meio da identidade de módulo.

O módulo gêmeo é um documento JSON que armazena as propriedades de configuração e as informações do módulo. Esse conceito é comparável ao conceito de dispositivo gêmeo do Hub IoT. A estrutura de um módulo gêmeo é igual a de um dispositivo gêmeo. As APIs usadas para interagir com os dois tipos de gêmeos também são as mesmas. A única diferença entre os dois é a identidade usada para instanciar o SDK do cliente.

// Create a ModuleClient object. This ModuleClient will act on behalf of a
// module since it is created with a module’s connection string instead
// of a device connection string.
ModuleClient client = new ModuleClient.CreateFromEnvironmentAsync(settings);
await client.OpenAsync();

// Get the module twin
Twin twin = await client.GetTwinAsync();

Funcionalidades offline

Os módulos do Azure IoT Edge podem operar offline indefinidamente após ao menos uma sincronização com o Hub IoT. Os dispositivos IoT Edge também podem estender esse recurso offline para outros dispositivos IoT. Para obter mais informações, confira Entender os recursos off-line estendidos para dispositivos IoT Edge, módulos e dispositivos de downstream.

Próximas etapas