Visão geral do Atlas Stream Processing
Nesta página
O Atlas Stream Processing permite a você processar streams de dados complexos usando a mesmaAPI de query do usada nos bancos de dados do Atlas. O processamento de fluxo do Atlas permite:
Crieaggregation pipelines para operar continuamente na transmissão de dados sem os atrasos inerentes ao processamento em lote.
Realize a validação contínua do esquema para verificar se as mensagens estão formadas corretamente, detecte a corrupção da mensagem e detecte a chegada atrasada de dados.
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.
Dados de streaming
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.
Arquitetura
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.
Estrutura de um processador de fluxo
Os processadores de stream 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 válidos json
ou ejson
. Cada estágio de agregação após o $source
consome cada registro do fluxo de cada vez e pode ser agrupado em três tipos:
Validação : o estágio
$validate
permite que você realize a validação do esquema em documentos ingeridos para garantir que somente documentos formatados corretamente continuem para processamento adicional e para 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 ou operadores de agregação que podem agir somente em conjuntos limitados de documentos. Essas agregações consomem, transformam e repassam conjuntos inteiros de documentos de uma só vez, e só podem aparecer dentro de janelas.
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.
Pontos de verificação
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.
dead letter queue (DLQ)
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.
Próximos passos
Para obter informações mais detalhadas sobre os principais conceitos do Atlas Stream Processing, leia o seguinte: