Como otimizamos o nível de armazenamento ativo da Rockset para melhorar a eficiência em mais de 200%


A velocidade e a escalabilidade dos dados usados ​​em aplicativos, que combinam estreitamente com seu custo, são componentes críticos com os quais toda equipe de desenvolvimento se importa. Este weblog descreve como otimizamos o nível de armazenamento quente da Rockset para melhorar a eficiência em mais de 200%. Nós nos aprofundamos em como arquitetamos para eficiência aproveitando novo {hardware}, maximizando o uso do armazenamento disponível, implementando melhores técnicas de orquestração e usando snapshots para durabilidade de dados. Com esses ganhos de eficiência, conseguimos reduzir custos, mantendo o mesmo desempenho e repassando a economia aos usuários. O novo preço em camadas da Rockset é tão baixo quanto $ 0,13/GB-mês, tornando os dados em tempo actual mais acessíveis do que nunca.

Camada de armazenamento quente do Rockset

A solução de armazenamento da Rockset é um cache baseado em SSD sobreposto ao Amazon S3, projetado para fornecer respostas de consulta consistentes de baixa latência. Essa configuração efetivamente ignora a latência tradicionalmente associada à recuperação de dados diretamente do armazenamento de objetos e elimina quaisquer custos de busca.


Como otimizamos o nível de armazenamento ativo da Rockset para melhorar a eficiência em mais de 200%

A estratégia de cache da Rockset ostenta uma taxa de acerto de cache de 99,9997%alcançando quase a perfeição na eficiência de cache no S3. No ano passado, a Rockset embarcou em uma série de iniciativas destinadas a melhorar a eficiência de custo de seu sistema de cache avançado. Concentramos esforços em acomodar as necessidades de escala dos usuários, variando de dezenas a centenas de terabytes de armazenamento, sem comprometer o aspecto essential do desempenho de baixa latência.

A arquitetura inovadora do Rockset tem separação de computação-computaçãopermitindo dimensionamento independente de computação de ingestão a partir de computação de consulta. O Rockset fornece latência de subsegundos para inserção, atualização e exclusão de dados. Os custos de armazenamento, desempenho e disponibilidade não são afetados pela computação de ingestão ou computação de consulta. Essa arquitetura exclusiva permite que os usuários:

  • Isole a ingestão de streaming e a computação de consulta, eliminando a contenção da CPU.
  • Execute vários aplicativos em dados compartilhados em tempo actual. Nenhuma réplica necessária.
  • Escala rápida de simultaneidade. Escale horizontalmente em segundos. Evite superprovisionamento de computação.

A combinação de armazenamento-computação e a separação entre computação resultou em usuários trazendo novas cargas de trabalho a bordo em maior escala, o que, sem surpresa, aumentou sua pegada de dados. As pegadas de dados maiores nos desafiaram a repensar a camada de armazenamento quente para melhor custo-benefício. Antes de destacar as otimizações feitas, queremos primeiro explicar a justificativa para a construção de uma camada de armazenamento quente.

Por que usar uma camada de armazenamento quente?

O Rockset é único em sua escolha de manter uma camada de armazenamento ativa. Bancos de dados como Pesquisa elástica dependem de armazenamento conectado localmente e information warehouses como Clique em Casa A nuvem usa armazenamento de objetos para atender consultas que não cabem na memória.

Quando se trata de atender aplicativos, várias consultas são executadas em dados de grande escala em uma janela de tempo curta, normalmente menos de um segundo. Isso pode causar rapidamente perdas de cache sem memória e buscas de dados de armazenamento conectado localmente ou armazenamento de objetos.

Limitações de armazenamento conectado localmente

Sistemas fortemente acoplados usam armazenamento conectado localmente para acesso a dados em tempo actual e tempos de resposta rápidos. Os desafios com armazenamento conectado localmente incluem:

  • Não é possível dimensionar dados e consultas de forma independente. Se o tamanho do armazenamento ultrapassar os requisitos de computação, esses sistemas acabam superprovisionados para computação.
  • O escalonamento é lento e propenso a erros. O escalonamento do cluster requer a cópia dos dados e a movimentação de dados, o que é um processo lento.
  • Mantenha alta disponibilidade usando réplicas, impactando a utilização do disco e aumentando os custos de armazenamento.
  • Cada réplica precisa processar dados de entrada. Isso resulta em amplificação de gravação e duplicação do trabalho de ingestão.


imagem7

Limitações de armazenamento de objetos compartilhados

Criar uma arquitetura desagregada usando armazenamento de objetos em nuvem take away os problemas de contenção com armazenamento conectado localmente. Os seguintes novos desafios ocorrem:

  • Latência adicionada, especialmente para leituras e gravações aleatórias. O benchmarking interno comparando Rockset com S3 viu leituras de <1 ms do Rockset e leituras de ~100 ms do S3.
  • Superprovisionamento de memória para evitar leituras de armazenamento de objetos para aplicativos sensíveis à latência.
  • Alta latência de dados, geralmente na ordem de minutos. Os information warehouses armazenam em buffer a ingestão e compactam os dados para otimizar as operações de varredura, resultando em tempo adicional entre o momento em que os dados são ingeridos e o momento em que são consultáveis.


imagem3

A Amazon também notou a latência de seu armazenamento de objetos em nuvem e introduziu recentemente S3 Xpress Uma Zona com acesso a dados de milissegundos de um dígito. Há várias diferenças a serem destacadas entre o design e o preço do S3 Xpress One Zone e o nível de armazenamento quente da Rockset. Por um lado, o S3 Categorical One Zone foi projetado para ser usado como um cache em uma única zona de disponibilidade. O Rockset foi projetado para usar armazenamento quente para acesso rápido e o S3 para durabilidade. Também temos preços diferentes: os preços do S3 Categorical One Zone incluem tanto o custo por GB quanto os custos de solicitações de colocação, cópia, postagem e lista. O preço da Rockset é baseado apenas em GB.

A maior diferença entre o S3 Xpress One Zone e o Rockset é o desempenho. Olhando para o gráfico de latência de ponta a ponta de um período de 24 horas, vemos que a latência média do Rockset entre o nó de computação e a consistência do armazenamento quente permanece em 1 milissegundo ou menos.


imagem1

Se examinarmos apenas a latência do lado do servidor, a leitura média é de ~100 microssegundos ou menos.


imagem8

Reduzindo o custo do nível de armazenamento quente

Para oferecer suporte a dezenas a centenas de terabytes de forma econômica no Rockset, aproveitamos novos perfis de {hardware}, maximizamos o uso do armazenamento disponível, implementamos melhores técnicas de orquestração e usamos snapshots para recuperação de dados.

Aproveite o {hardware} com boa relação custo-benefício

Como a Rockset separa o armazenamento quente da computação, ela pode escolher perfis de {hardware} que são ideais para armazenamento quente. Usando as mais recentes instâncias de nuvem otimizadas para rede e armazenamento, que fornecem o melhor preço-desempenho por GB, conseguimos reduzir os custos em 17% e repassar essas economias aos clientes.

Como observamos que IOPS e largura de banda de rede no Rockset geralmente vinculam o desempenho do sizzling storage, encontramos uma instância EC2 com recursos de RAM e CPU ligeiramente menores, mas a mesma quantidade de largura de banda de rede e IOPS. Com base em cargas de trabalho de produção e benchmarking interno, conseguimos ver desempenho semelhante usando o novo {hardware} de menor custo e repassar a economia aos usuários.

Maximize o armazenamento disponível

Para manter os mais altos padrões de desempenho, inicialmente projetamos a camada de armazenamento quente para conter duas cópias de cada bloco de dados. Isso garante que os usuários obtenham desempenho confiável e consistente o tempo todo. Quando percebemos que duas cópias tinham um impacto muito alto nos custos de armazenamento, nos desafiamos a repensar como manter as garantias de desempenho enquanto armazenávamos uma segunda cópia parcial.

Usamos uma política LRU (Least Lately Used) para garantir que os dados necessários para consulta estejam prontamente disponíveis, mesmo se uma das cópias for perdida. A partir de testes de produção, descobrimos que armazenar cópias secundárias para ~30% dos dados é suficiente para evitar ir ao S3 para recuperar dados, mesmo no caso de uma falha do nó de armazenamento.


imagem5

Implementar melhores técnicas de orquestração

Embora adicionar nós à camada de armazenamento quente seja simples, remover nós para otimizar custos requer orquestração adicional. Se removêssemos um nó e dependêssemos do backup do S3 para restaurar dados para a camada quente, os usuários poderiam experimentar latência. Em vez disso, projetamos um estado de “pré-drenagem” em que o nó designado para exclusão envia dados para os outros nós de armazenamento no cluster. Depois que todos os dados forem copiados para os outros nós, podemos removê-los com segurança do cluster e evitar quaisquer impactos no desempenho. Usamos esse mesmo processo para quaisquer atualizações para garantir um desempenho de cache consistente.


imagem2

Use Snapshots para Recuperação de Dados

Inicialmente, o S3 foi configurado para arquivar cada atualização, inserção e exclusão de documentos no sistema para fins de recuperação. No entanto, conforme o uso do Rockset se expandiu, essa abordagem levou ao inchaço do armazenamento no S3. Para resolver isso, implementamos uma estratégia envolvendo o uso de snapshots, o que reduziu o quantity de dados armazenados no S3. Os snapshots permitem que o Rockset crie uma cópia congelada de baixo custo dos dados que pode ser restaurada posteriormente. Os snapshots não duplicam o conjunto de dados inteiro; em vez disso, eles registram apenas as alterações desde o snapshot anterior. Isso reduziu o armazenamento necessário para recuperação de dados em 40%.

Armazenamento a quente em escala de centenas de TBs

A camada de armazenamento quente no Rockset foi projetada para oferecer desempenho de consulta previsível para pesquisa e análise no aplicativo. Ela cria uma camada de armazenamento compartilhada que qualquer instância de computação pode acessar.

Com o novo preço de armazenamento quente tão baixo quanto $ 0,13 / GB-mês, a Rockset é capaz de suportar cargas de trabalho na faixa de 10 a 100 terabytes de forma econômica. Estamos continuamente buscando tornar o armazenamento quente mais acessível e repassar a economia de custos aos clientes. Até agora, otimizamos o nível de armazenamento quente da Rockset para melhorar a eficiência em mais de 200%.

Você pode aprender mais sobre o Rockset arquitetura de armazenamento usando RocksDB no weblog de engenharia e também veja os preços de armazenamento para sua carga de trabalho no calculadora de preços.



Deixe um comentário

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