Quando o tempo actual é importante: Rockset oferece latência de dados de 70 ms com ingestão de streaming de 20 MB/s


A adoção de streaming de dados continua a acelerar, com mais de 80% das empresas Fortune 100 já usando Apache Kafka para colocar dados em uso em tempo actual. O streaming de dados muitas vezes vai para bancos de dados de pesquisa e análise em tempo actual que atuam como uma camada de serviço para casos de uso, incluindo detecção de fraude em fintech, estatísticas em tempo actual em esportes eletrônicos, personalização em comércio eletrônico e muito mais. Esses casos de uso são sensíveis à latência, com atrasos de dados de até milissegundos, resultando em perda de receita ou risco para os negócios.

Como resultado, os clientes perguntam sobre a latência ponta a ponta que podem alcançar no Rockset ou o tempo desde a geração dos dados até o momento em que são disponibilizados para consultas. A partir de hoje, a Rockset lança um benchmark que atinge 70 ms de latência de dados em 20 MB/s de taxa de transferência em streaming de dados.

A capacidade da Rockset de ingerir e indexar dados em 70 ms é uma grande conquista que muitos clientes de grandes empresas têm lutado para alcançar em seus aplicativos de missão crítica. Com esse benchmark, a Rockset dá confiança às empresas que criam aplicativos de próxima geração em dados de streaming em tempo actual do Apache Kafka, Confluent Cloud, Amazon Kinesis e muito mais.

Vários aprimoramentos recentes de produtos levaram a Rockset a obter ingestão de streaming com latência de milissegundos:

  • Separação computação-computação: Rockset separa computação de ingestão de streaming, computação de consulta e armazenamento para eficiência na nuvem. A nova arquitetura também reduz a sobrecarga de gravação da CPU, eliminando tarefas de ingestão duplicadas.
  • RochasDB: Rockset é baseado em RocksDB, um mecanismo de armazenamento integrado de alto desempenho. Rockset atualizou recentemente para RocksDB 7.8.0+, que oferece vários aprimoramentos que minimizam a amplificação de gravação.
  • Análise de dados: Rockset tem ingestão sem esquema e suporta formatos de dados abertos e dados profundamente aninhados em formatos JSON, Parquet, Avro e muito mais. Para executar análises complexas sobre esses dados, o Rockset converte os dados no momento da ingestão em um formato proprietário padrão usando analisadores de dados eficientes e personalizados.

Neste weblog, descrevemos a configuração dos testes, os resultados e as melhorias de desempenho que levaram o Rockset a atingir latência de dados de 70 ms em 20 MB/s de taxa de transferência.

Benchmarking de desempenho para pesquisa e análise em tempo actual

Existem duas características definidoras de bancos de dados de pesquisa e análise em tempo actual: latência de dados e latência de consulta.

A latência dos dados mede o tempo desde o momento em que os dados são gerados até o momento em que podem ser consultados no banco de dados. Para cenários em tempo actual, cada milissegundo é importante, pois pode fazer a diferença entre capturar fraudadores, manter os jogadores envolvidos com uma jogabilidade adaptável e apresentar produtos personalizados com base na atividade on-line e muito mais.

A latência da consulta mede o tempo para executar uma consulta e retornar um resultado. Os aplicativos desejam minimizar a latência de consulta para criar experiências rápidas e responsivas que mantenham os usuários envolvidos. Rockset comparou a latência de consulta no Referência de esquema em estrelauma referência padrão do setor para aplicativos analíticos, e foi capaz de superar o ClickHouse e o Druid, fornecendo latências de consulta tão baixas quanto 17 ms.

Neste weblog, comparamos a latência de dados em diferentes taxas de ingestão usando Banco de pedra. A latência de dados tornou-se cada vez mais um requisito de produção à medida que mais e mais empresas criam aplicações com base em streaming de dados em tempo actual. Descobrimos, a partir de conversas com clientes, que muitos outros sistemas de dados enfrentam o peso do alto rendimento e não conseguem obter uma ingestão de dados previsível e de alto desempenho para seus aplicativos. O problema é a falta de (a) sistemas desenvolvidos especificamente para ingestão de streaming (b) sistemas que possam dimensionar a ingestão para poder processar dados mesmo quando a taxa de transferência de fluxos de eventos aumenta rapidamente.

O objetivo deste benchmark é mostrar que é possível construir aplicativos analíticos e de pesquisa de baixa latência em dados de streaming.

Usando RockBench para medir rendimento e latência

Avaliamos o desempenho de ingestão de streaming do Rockset usando o RockBench, um benchmark que mede o rendimento e a latência ponta a ponta dos bancos de dados.

RockBench possui dois componentes: um gerador de dados e um avaliador de métricas. O gerador de dados grava eventos no banco de dados a cada segundo; o avaliador de métricas mede o rendimento e a latência ponta a ponta.


Quando o tempo actual é importante: Rockset oferece latência de dados de 70 ms com ingestão de streaming de 20 MB/s

Gerador de dados RockBench

O gerador de dados cria documentos de 1,25 KB com cada documento representando um único evento. Isso se traduz em 8.000 gravações, o equivalente a ten MB/s.

Para espelhar eventos semiestruturados em cenários realistas, cada documento possui 60 campos com objetos e matrizes aninhados. O documento também contém vários campos que são usados ​​para calcular a latência ponta a ponta:

  • _id: O identificador exclusivo do documento
  • _event_time: Reflete a hora do relógio da máquina geradora
  • generator_identifier: número aleatório de 64 bits

O _event_time de cada documento é então subtraído do tempo atual da máquina para chegar à latência de dados de cada documento. Essa medida também inclui a latência de ida e volta – o tempo necessário para executar a consulta e obter resultados do banco de dados. Esta métrica é publicada em um servidor Prometheus e as latências p50, p95 e p99 são calculadas em todos os avaliadores.

Nesta avaliação de desempenho, o gerador de dados insere novos documentos no banco de dados e não atualiza nenhum documento existente.

Configuração e resultados do Rockset

Todos os bancos de dados fazem compensações entre taxa de transferência e latência ao ingerir dados de streaming com taxa de transferência mais alta, incorrendo em penalidades de latência e vice-versa.

Recentemente comparamos o desempenho do Rockset em relação ao Elasticsearch com taxa de transferência máxima e o Rockset alcançou Ingestão de dados de streaming até 4x mais rápida. Para este benchmark, minimizamos a latência de dados para exibir o desempenho do Rockset em casos de uso que exigem os dados mais recentes possíveis.

Executamos o benchmark usando um tamanho de lote de 10 documentos por solicitação de gravação em uma coleção inicial do Rockset de 300 GB. O benchmark manteve a taxa de transferência de ingestão constante em 10 MB/s e 20 MB/s e registrou as latências de dados p50, p95 e p99.

O benchmark foi executado em instâncias virtuais XL e 2XL ou em alocações dedicadas de recursos de computação e memória. A instância digital XL possui 32 vCPU e 256 GB de memória e a 2XL possui 64 vCPU e 512 GB de memória.

Aqui estão os resultados resumidos do benchmark nas latências p50, p95 e p99 no Rockset:


Resultados de referência

Tabela de resultados

Resultados de benchmark visualizados

Gráfico de barras de resultados

Na latência de dados p95, o Rockset conseguiu atingir 70 ms com taxa de transferência de 20 MB/s. Os resultados de desempenho mostram que, à medida que a taxa de transferência aumenta e o tamanho da instância digital aumenta, o Rockset é capaz de manter latências de dados semelhantes. Além disso, as latências de dados para as médias p95 e p99 estão agrupadas, mostrando um desempenho previsível.

Melhorias de desempenho do Rockset

Existem vários aprimoramentos de desempenho que permitem ao Rockset atingir latência de dados em milissegundos:

Separação computação-computação

A Rockset revelou recentemente uma nova arquitetura de nuvem para análises em tempo actual: separação computação-computação. A arquitetura permite que os usuários criem múltiplas instâncias virtuais isoladas nos mesmos dados compartilhados. Com a nova arquitetura implementada, os usuários podem isolar a computação usada para ingestão de streaming da computação usada para consultas, garantindo não apenas alto desempenho, mas também alto desempenho previsível e eficiente. Os usuários não precisam mais provisionar computação em excesso ou adicionar réplicas para superar a contenção de computação.

Um dos benefícios desta nova arquitetura é que conseguimos eliminar tarefas duplicadas no processo de ingestão para que toda a análise de dados, transformação de dados, indexação e compactação de dados ocorram apenas uma vez. Isso reduz significativamente a sobrecarga de CPU necessária para ingestão, ao mesmo tempo que mantém a confiabilidade e permite que os usuários obtenham um desempenho ainda melhor em termos de preço.

Atualização do RocksDB

Rockset usa RocksDB como seu mecanismo de armazenamento incorporado sob o capô. A equipe da Rockset criou e abriu o código-fonte do RocksDB enquanto estava no Fb e atualmente é usado em produção no Linkedin, Netflix, Pinterest e mais empresas em escala internet. A Rockset selecionou o RocksDB por seu desempenho e capacidade de lidar com dados que mudam frequentemente com eficiência. Rockset aproveita a versão mais recente do RocksDB, versão 7.8.0+, para reduzir a amplificação de gravação em mais de 10%.

Versões anteriores do RocksDB usavam um algoritmo de compactação de mesclagem parcial, que seleciona um arquivo do nível de origem e compacta para o próximo nível. Comparado a uma compactação de mesclagem completa, isso produz um tamanho de compactação menor e melhor paralelismo. No entanto, também resulta em amplificação de gravação.


Algoritmo anterior de compactação de mesclagem RocksDB

Algoritmo anterior de compactação de mesclagem RocksDB

No RocksDB versão 7.8.0+, o arquivo de saída da compactação é cortado mais cedo e permite tamanho maior que targeted_file_size para alinhar os arquivos de compactação aos arquivos do próximo nível. Isso reduz a amplificação de gravação em mais de 10%.


Novo algoritmo de compactação de mesclagem RocksDB

Novo algoritmo de compactação de mesclagem RocksDB

Ao atualizar para esta nova versão do RocksDB, a redução na amplificação de gravação significa melhor desempenho de ingestão, que você pode ver refletido nos resultados do benchmark.

Analisadores personalizados

Rockset possui ingestão sem esquema e suporta uma ampla variedade de formatos de dados, incluindo JSON, Parquet, Avro, XML e muito mais. A capacidade do Rockset de oferecer suporte nativo a SQL em dados semiestruturados minimiza a necessidade de pipelines upstream que adicionam latência aos dados. Para tornar esses dados consultáveis, o Rockset converte os dados em um formato proprietário padrão no momento da ingestão usando analisadores de dados.

Os analisadores de dados são responsáveis ​​por baixar e analisar os dados para disponibilizá-los para indexação. Os analisadores de dados legados da Rockset aproveitaram componentes de código aberto que não usavam memória ou computação de maneira eficiente. Além disso, os analisadores legados converteram os dados para um formato intermediário antes de converter novamente os dados para o formato proprietário da Rockset. Para minimizar a latência e a computação, os analisadores de dados foram reescritos em um formato personalizado. Os analisadores de dados personalizados são duas vezes mais rápidos, ajudando a alcançar os resultados de latência de dados capturados neste benchmark.

Como as melhorias de desempenho beneficiam os clientes

A Rockset oferece ingestão previsível e de alto desempenho que permite que clientes de todos os setores criem aplicações em streaming de dados. Aqui estão alguns exemplos de aplicativos sensíveis à latência desenvolvidos no Rockset nos setores de seguros, jogos, saúde e serviços financeiros:

  • Setor segurador: A digitalização do setor segurador está a levar as seguradoras a fornecer apólices adaptadas aos perfis de risco dos clientes e adaptadas em tempo actual. Uma seguradora Fortune 500 fornece cotações de seguros instantâneas com base em centenas de fatores de risco, exigindo menos de 200 ms de latência de dados para gerar cotações de seguros em tempo actual.
  • Indústria de jogos: Placares de líderes em tempo actual aumentam o envolvimento e a retenção dos jogadores com métricas ao vivo. Uma empresa líder em jogos esportivos exige latência de dados de 200 ms para mostrar como os jogos progridem em tempo actual.
  • Serviços financeiros: O software program de gestão financeira ajuda empresas e indivíduos a acompanhar a sua saúde financeira e onde o seu dinheiro está a ser gasto. Uma empresa Fortune 500 usa análises em tempo actual para fornecer uma visão financeira de 360 ​​graus, exibindo as transações mais recentes em menos de 500 ms.
  • Setor de saúde: As informações de saúde e os perfis dos pacientes mudam constantemente com novos resultados de testes, atualizações de medicamentos e comunicação com os pacientes. Um importante participant de saúde ajuda equipes clínicas a monitorar e rastrear pacientes em tempo actual, com um requisito de latência de dados inferior a 2 segundos.

O Rockset dimensiona a ingestão para suportar dados de streaming de alta velocidade sem causar qualquer impacto negativo no desempenho da consulta. Como resultado, empresas de todos os setores estão aproveitando o valor do streaming de dados em tempo actual de maneira eficiente e acessível. Estamos entusiasmados em continuar a ampliar os limites mais baixos de latência de dados e compartilhar o mais recente benchmark de desempenho com o Rockset alcançando latência de dados de 70 ms em 20 MB/s de ingestão de dados de streaming.

Você também pode experimentar essas melhorias de desempenho automaticamente e sem precisar de ajuste de infraestrutura ou atualizações manuais, iniciando um teste gratuito do Rockset hoje.


Richard Lin e Kshitij Wadhwa, engenheiros de software program da Rockset, realizaram a investigação e os testes de latência de dados nos quais este weblog se baseia.



Deixe um comentário

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