Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/

Visão geral do Atlas Stream Processing

Nesta página

  • Dados de streaming
  • Arquitetura
  • Estrutura de um processador de fluxo
  • Pontos de verificação
  • dead letter queue (DLQ)
  • Regiões do Atlas Stream Processing
  • Próximos passos

O Atlas Stream Processing permite que você processe fluxos de dados complexos usando a mesma API de query usada nos bancos de dados do Atlas. O Atlas Stream Processing permite que você:

  • Crie pipelines de agregação para operar continuamente em dados de streaming sem os atrasos inerentes no processamento em lote.

  • Execute a validação de esquema contínua para verificar se as mensagens estão formadas corretamente, detectar corrupção de mensagens e detectar dados que chegam tarde.

  • Publicar continuamente resultados nas collections do Atlas ou no Apache Kafka clusters, garantindo visualizações e análises atualizadas dos dados.

Os componentes do Atlas Stream Processing pertencem diretamente ao projeto Atlas e operam independentemente do cluster do Atlas.

Fluxos são fluxos contínuos de dados originados de uma ou mais fontes, que assume a forma de um log apenas para acréscimos. Exemplos de fluxos de dados são as leituras de temperatura ou pressão de sensores, registros de transações financeiras ou eventos de captura de dados de alterações.

Os fluxos de dados são originados de fontes como o Apache Kafka Topics ou alterar streams. Então, você pode escrever dados processados em coletores como o Apache Kafka Topics ou coleções Atlas.

Os fluxos de dados se originam em sistemas com estado em rápida mudança. O Atlas Stream Processing oferece recursos nativos de Atlas Stream Processing para operar em dados contínuos sem o tempo e restrições computacionais de um reconhecimento de data center em repouso.

A abstração principal do Atlas Stream Processing é o processador de fluxo. Um processador de fluxo é uma consulta de pipeline de agregação do MongoDB que opera continuamente no streaming de dados de uma fonte especificada e grava a saída em um coletor. Para saber mais, consulte Estrutura de um processador de stream.

O processamento do fluxo ocorre em instâncias de processamento de fluxo. Cada instância de processamento de fluxo é um namespace do Atlas que associa o seguinte:

  • Um ou mais trabalhadores, que disponibilizam a RAM e as CPUs necessárias para executar seus processadores de fluxo.

  • Um provedor de nuvem e uma região de nuvem.

  • Um registro de conexão, que armazena a lista de fontes e sumidouros disponíveis de dados de streaming.

  • Um contexto de segurança no qual definir autorizações de usuário.

  • Uma connection string com a própria instância do Atlas Stream Processing .

Quando você define um processador de fluxo, ele fica disponível somente para a instância de processamento de fluxo na qual você o define. Cada worker pode hospedar até quatro processadores de fluxo em execução; o Atlas Stream Processing dimensiona automaticamente sua instância de processamento de fluxo à medida que você inicia os processadores de fluxo, provisionando workers conforme necessário. Você pode desprovisionar um worker interrompendo todos os processadores de fluxo nele. O Atlas Stream Processing sempre dá preferência em atribuir um processador de fluxo a um worker existente em vez de provisionar novos workers.

Exemplo

Você tem uma instância Atlas Stream Processing executando oito processadores de stream, denominados proc01 por meio de proc08. proc01 a proc04 são executadas em um trabalhador, proc05 a proc08 executadas em um segundo trabalhador. Você inicia um novo processador de fluxo denominado proc09. O Atlas Stream Processing provisiona um terceiro trabalhador para hospedar proc09.

Depois, você para o proc03 no primeiro trabalhador. Quando você interrompe e reinicia o proc09, o Atlas Stream Processing reatribui proc09 ao primeiro trabalhador e desprovisiona o terceiro trabalhador.

Se você iniciar um novo processador de fluxo denominado proc10 antes de parar e reiniciar proc09, o Atlas Stream Processing atribuirá proc10 ao primeiro trabalhador no slot alocado anteriormente a proc03.

Ao fazer o dimensionamento, o Atlas Stream Processing considera apenas o número de processadores de fluxo em execução no momento. Ele não conta processadores de fluxo definidos que não estão em execução. O nível da instância de processamento de fluxo determina a alocação de RAM e CPU dos seus trabalhadores.

Os registros de conexão armazenam uma ou mais conexões. Cada conexão atribui um nome à combinação de detalhes de rede e segurança que permitem que um processador de stream interaja com serviços externos. As conexões exibem o seguinte comportamento:

  • Somente uma conexão definida no registro de conexões de uma determinada instância de processamento de fluxo pode atender aos processadores de fluxo hospedados nessa instância de processamento de fluxo.

  • Cada conexão pode atender a um número arbitrário de processadores de fluxo

  • Somente uma conexão pode servir como fonte de um determinado processador de fluxo.

  • Somente uma única conexão pode servir como coletor de um determinado processador de fluxo.

  • Uma conexão não é definida naturalmente como fonte ou coletor. Qualquer conexão pode servir qualquer função dependendo de como um processador de fluxo invoca essa conexão.

Atlas Stream Processing executa trabalhadores do Atlas Stream Processing em containers de clientes dedicados, em infraestrutura de vários inquilinos. Para obter mais informações sobre segurança e conformidade do MongoDB, consulte a Central de confiança do MongoDB.

Os processadores de fluxo assumem a forma de um pipeline de agregação. Cada processador começa com um estágio $source que se conecta a uma fonte e começa a receber um fluxo contínuo de dados na forma de documentos. Esses documentos devem ser json ou ejson válidos. Cada estágio de agregação após o $source consome cada registro do fluxo por vez e pode ser agrupado em três tipos:

  • Validação : O estágio $validate permite que você execute a validação de esquema em documentos ingeridos para garantir que apenas documentos formatados corretamente continuem para processamento posterior e determinar o que acontece com documentos formatados incorretamente. A validação é opcional.

  • Operações sem estado: estágios de agregação ou operadores que podem atuar diretamente no fluxo de dados de entrada. Essas agregações consomem, transformam e transmitem cada documento por vez e podem aparecer em qualquer ponto entre os estágios $source e $emit ou $merge.

  • Operações com estado: estágios de agregação ou operadores que podem atuar apenas em conjuntos limitados de documentos. Essas agregações consomem, transformam e repassam conjuntos inteiros de documentos de uma só vez e podem aparecer apenas dentro de windows.

As Windows são estágios de pipeline que consomem dados de streaming e os dividem em conjuntos delimitados pelo tempo para que você possa aplicar estágios e operadores inaplicáveis a dados infinitos, como $group e $avg. Cada processador de fluxo só pode ter um estágio de janela.

Depois de processar os dados ingeridos, o processador de stream os grava em uma plataforma de streaming de dados usando o estágio $emit ou em um banco de dados Atlas com o estágio $merge. Esses estágios são mutuamente exclusivos e um processador de stream só pode ter um deles.

O Atlas Stream Processing captura o estado de um processador de stream usando documentos de checkpoint. Esses documentos têm IDs exclusivos e estão sujeitos ao fluxo da lógica do seu processador de stream. Quando o último operador de um processador de stream termina de agir em um documento de checkpoint, o Atlas Stream Processing confirma o checkpoint, gerando dois tipos de registros:

  • Um único registro que valida o ID de checkpoint e o processador de fluxo ao qual ele pertence

  • Um conjunto de registros que descrevem o estado de cada operação com estado no processador de fluxo relevante no instante em que o Atlas Stream Processing executou o checkpoint.

Quando você reinicia um processador de fluxo após uma interrupção, o Atlas Stream Processing faz query do último checkpoint confirmado e retoma a operação a partir do estado descrito.

O Atlas Stream Processing suporta o uso de uma collection de reconhecimento de data center do Atlas como uma fila de mensagens não entregues (DLQ) . Quando o Atlas Stream Processing não pode processar um documento do seu fluxo de dados, ele grava o conteúdo do documento no DLQ junto com detalhes da falha de processamento. Você pode atribuir uma collection como um DLQ em suas definições do processador de fluxo.

Para saber mais, consulte Criar um processador de fluxo.

O Atlas Stream Processing oferece suporte à criação de instâncias de processamento de fluxo no AWS e Azure. Para obter uma lista de regiões disponíveis, consulte as seções Instâncias de Processamento de Fluxo do:

Os processadores de fluxo podem ler e gravar em clusters hospedados em diferentes provedores de nuvem ou em diferentes regiões, desde que estejam no mesmo projeto da instância de processamento de fluxo do host.

Para obter informações mais detalhadas sobre os principais conceitos do Atlas Stream Processing, leia o seguinte:

Voltar

Atlas Stream Processing