Uma visão geral da separação computação-computação no Rockset


Rockset apresenta uma nova arquitetura que permite que instâncias virtuais separadas isolem a ingestão de streaming de consultas e um aplicativo de outro. A separação entre computação na nuvem oferece novas eficiências para análises em tempo actual em escala, com dados compartilhados em tempo actual, zero contenção de computação, aumento ou redução rápida e escalabilidade de simultaneidade ilimitada.

O problema da contenção computacional

A análise em tempo actual, incluindo mecanismos de personalização, aplicativos de rastreamento logístico e aplicativos de detecção de anomalias, é um desafio para escalar com eficiência. Os aplicativos de dados competem constantemente pelo mesmo conjunto de recursos computacionais para suportar gravações de streaming de alto quantity, consultas de baixa latência e cargas de trabalho de alta simultaneidade. Como resultado, surge a contenção computacional, causando vários problemas para clientes e clientes potenciais:

  • A análise voltada ao usuário em meu aplicativo SaaS só pode ser atualizada a cada 30 minutos, pois o banco de dados subjacente fica instável sempre que tento processar dados de streaming continuamente.
  • Quando meu website de comércio eletrônico realiza promoções, a enorme quantidade de gravações afeta o desempenho do meu mecanismo de personalização porque meu banco de dados não consegue isolar as gravações das leituras.
  • Começamos a executar um único aplicativo de rastreamento logístico no cluster de banco de dados. No entanto, quando adicionamos um ETA em tempo actual e um aplicativo de roteamento automatizado, as cargas de trabalho adicionais degradaram o desempenho do cluster. Como solução alternativa, adicionei réplicas para isolamento, mas o custo adicional de computação e armazenamento é caro.
  • O uso do meu aplicativo de jogos disparou no ano passado. Infelizmente, à medida que o número de usuários e consultas simultâneas em meu aplicativo aumenta, fui forçado a dobrar o tamanho do meu cluster, pois não há como adicionar mais recursos de forma incremental.

Com todos os cenários acima, as organizações devem provisionar recursos em excesso, criar réplicas para isolamento ou reverter para lotes.

Benefícios da separação computação-computação

Nesta nova arquitetura, as instâncias virtuais contêm a computação e a memória necessárias para a ingestão e consultas de streaming. Os desenvolvedores podem ativar ou desativar instâncias virtuais com base nos requisitos de desempenho de suas cargas de trabalho de ingestão ou consulta de streaming. Além disso, o Rockset fornece acesso rápido aos dados por meio do uso de armazenamento quente de melhor desempenho, enquanto o armazenamento em nuvem é usado para maior durabilidade. A capacidade da Rockset de explorar a nuvem torna possível o isolamento completo dos recursos computacionais.


Uma visão geral da separação computação-computação no Rockset

O isolamento computação-computação separa a computação de ingestão de streaming, a computação de consulta e a computação para vários aplicativos

A separação computação-computação oferece as seguintes vantagens:

  • Isolamento de ingestão e consultas de streaming
  • Vários aplicativos em dados compartilhados em tempo actual
  • Dimensionamento de simultaneidade ilimitado

Isolamento de ingestão e consultas de streaming

Nas arquiteturas de banco de dados de primeira geração, incluindo Elasticsearch e Druid, os clusters contêm a computação e a memória para ingestão e consultas de streaming, causando contenção de computação. O Elasticsearch tentou resolver a contenção computacional criando nós de ingestão dedicados para transformar e enriquecer o documento, mas isso acontece antes da indexação, que ainda ocorre nos nós de dados junto com as consultas. A indexação e a compactação exigem muita computação e colocar essas cargas de trabalho em cada nó de dados impacta negativamente o desempenho da consulta.

Por outro lado, o Rockset permite múltiplas instâncias virtuais para isolamento computacional. O Rockset coloca operações de ingestão com uso intensivo de computação, incluindo indexação e manipulação de atualizações, na instância digital de ingestão de streaming e, em seguida, usa um log RocksDB CDC para enviar atualizações, inserções e exclusões para consultar instâncias virtuais. Como resultado, o Rockset é agora o único banco de dados analítico em tempo actual que isola a ingestão de streaming da computação de consulta sem a necessidade de criar réplicas.


Rockset isola computação de ingestão de streaming e computação de consulta. A instância virtual de ingestão de streaming lida com operações de uso intensivo de computação, incluindo análise do documento de entrada, extração de campos, transformação de dados, indexação de dados e tratamento de atualizações. O log RocksDB CDC envia atualizações, inserções e exclusões para a instância virtual de computação de consulta, salvando a computação na instância virtual para execução de consulta.

Rockset isola computação de ingestão de streaming e computação de consulta. A instância digital de ingestão de streaming lida com operações de uso intensivo de computação, incluindo análise do documento de entrada, extração de campos, transformação de dados, indexação de dados e tratamento de atualizações. O log RocksDB CDC envia atualizações, inserções e exclusões para a instância digital de computação de consulta, salvando a computação na instância digital para execução de consulta.

Vários aplicativos em dados compartilhados em tempo actual

Até este ponto, a separação entre armazenamento e computação dependia do armazenamento de objetos em nuvem, que é econômico, mas não consegue atender às demandas de velocidade da análise em tempo actual. Agora, os usuários podem executar vários aplicativos com dados de segundos, onde cada aplicativo é isolado e dimensionado com base em seus requisitos de desempenho. A criação de instâncias virtuais separadas, cada uma dimensionada de acordo com as necessidades do aplicativo, elimina a contenção de computação e a necessidade de provisionar recursos de computação em excesso para atender ao desempenho. Além disso, os dados compartilhados em tempo actual reduzem significativamente o custo do armazenamento a quente, pois é necessária apenas uma cópia dos dados.

Simultaneidade ilimitada

Os clientes podem dimensionar a instância digital para o desempenho de consulta desejado e, em seguida, ampliar a computação para cargas de trabalho de maior simultaneidade. Em outros sistemas que usam réplicas para escalonamento de simultaneidade, cada réplica precisa processar individualmente os dados recebidos do fluxo que exige muita computação. Isso também adiciona carga à fonte de dados, pois ela precisa dar suporte a diversas réplicas. O Rockset processa os dados de streaming uma vez e depois aumenta, deixando recursos de computação para execução de consultas.

Como funciona a separação computação-computação

Vamos ver como funciona a separação computação-computação usando streaming de dados do Twitter firehose para atender vários aplicativos:

  • um aplicativo com os símbolos de cotação da bolsa mais tweetados
  • um aplicativo com as hashtags mais tuitadas

Veja como será a arquitetura:


Pilha de dados de demonstração de separação de computação

Pilha de dados de demonstração de separação de computação
  • Transmitiremos dados do Twitter Firehose para o Rockset usando a plataforma de streaming de eventos Amazon Kinesis
  • Em seguida, criaremos uma coleção a partir dos dados do Twitter. A instância digital padrão será dedicada à ingestão de streaming neste exemplo.
  • Em seguida, criaremos uma instância digital adicional para processamento de consultas. Esta instância digital encontrará os símbolos de cotações da bolsa mais tweetados no Twitter.
  • Repetindo o mesmo processo, podemos criar outra instância digital para processamento de consultas. Esta instância digital encontrará as hashtags mais populares no Twitter.
  • Expandiremos a escala para várias instâncias virtuais para lidar com cargas de trabalho de alta simultaneidade.

Etapa 1: crie uma coleção que sincronize dados do Twitter do Kinesis Stream

Em preparação para o passo a passo da separação computação-computação, configurei um integração com Amazon Kinesis usando funções IAM entre contas da AWS e chaves de acesso da AWS. Então usei a integração para criar uma coleção, twitter_kinesis_30dayque sincroniza dados do Twitter do stream do Kinesis.


Criação de coleção

Criação de coleção

No momento da criação da coleção, também posso criar transformações de ingestão, incluindo o uso de rollups SQL para agregar dados continuamente. Neste exemplo, usei transformações de ingestão para converter uma information como carimbo de information/hora, analisar um campo e extrair campos aninhados.


Ingerir transformações

Ingerir transformações

A instância digital padrão é responsável por transmitir a ingestão de dados e as transformações de ingestão.

Etapa 2: criar várias instâncias virtuais

Indo para a guia de instâncias virtuais, agora posso criar e gerenciar várias instâncias virtuais, incluindo:

  • alterando o número de recursos em uma instância digital
  • montando ou associando uma instância digital a uma coleção
  • definir a política de suspensão de uma instância digital para economizar recursos de computação

Neste cenário, quero isolar a computação de ingestão de streaming e a computação de consulta. Criaremos instâncias virtuais secundárias para atender consultas com:

  • os símbolos de cotação da bolsa mais tweetados
  • as hashtags mais tuitadas

A instância digital é dimensionada com base nos requisitos de latência do aplicativo. Também pode ser suspenso automaticamente devido à inatividade.


Crie várias instâncias virtuais

Crie várias instâncias virtuais

Etapa 3: montar coleções em instâncias virtuais

Antes de poder consultar uma coleção, primeiro preciso montar a coleção na instância digital.

Neste exemplo, montarei a coleção Twitter kinesis no top_tickers instância digital, para que eu possa executar consultas para encontrar os símbolos mais tweetados sobre as cotações da bolsa. Além disso, posso escolher uma atualização periódica ou contínua dependendo dos requisitos de latência de dados da minha aplicação. A opção de atualização contínua está atualmente disponível no acesso antecipado.


Monte coleções em instâncias virtuais

Monte coleções em instâncias virtuais

Etapa 4: executar consultas na instância digital

Irei ao editor de consultas para executar a consulta SQL no top_tickers instância digital.

Criei uma consulta SQL para encontrar os símbolos da bolsa com mais menções no Twitter nas últimas 24 horas. No canto superior direito do editor de consultas, selecionei a instância digital top_tickers para atender a consulta. Você pode ver que a consulta foi executada em 191 ms.


Consulta executada na instância virtual top_tickers

Consulta executada na instância digital top_tickers

Etapa 5: Expandir para suportar cargas de trabalho de alta simultaneidade

Vamos agora expandir para dar suporte a cargas de trabalho de alta simultaneidade. No JMeter simulei 20 consultas por segundo e registrei uma latência média de 1613 ms para as consultas.


Teste de carga de simultaneidade

Teste de carga de simultaneidade

Resultado do teste de carga de simultaneidade em diversas instâncias virtuais

Resultado do teste de carga de simultaneidade em instâncias virtuais únicas

Se meu SLA para meu aplicativo for inferior a 1 segundo, desejarei aumentar a computação. Posso expandir instantaneamente e você pode ver que adicionar outra Instância Digital média reduziu a latência de 20 consultas para uma média de 457 ms.


Resultado do teste de carga de simultaneidade em diversas instâncias virtuais

Resultado do teste de carga de simultaneidade em diversas instâncias virtuais

Discover a separação computação-computação

Exploramos como criar várias instâncias virtuais para ingestão de streaming, consultas de baixa latência e vários aplicativos. Com o lançamento da separação computação-computação na nuvem, estamos entusiasmados em tornar a análise em tempo actual mais eficiente e acessível. Experimente o beta público de separação computação-computação hoje, iniciando um teste gratuito do Rockset.

Conteúdo incorporado: https://youtu.be/tedD5M_vx5I



Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *