Dragonfly, um projeto que afirma ser o substituto mais rápido para Redis e Memcached

Foi divulgada a notícia de que a primeira versão já está disponível sistema de cache de dados na memória Dragonfly, que fornece suporte para os protocolos Memcached e Redis, mas permite que as consultas sejam executadas com desempenho muito maior e menor consumo de memória.

O sistema lida com dados em formato de chave/valor e pode ser usado como uma solução leve para acelerar sites muito carregados, armazenar em cache consultas lentas no DBMS e armazenar em cache dados intermediários na RAM.

O BSL foi proposto pelos co-fundadores do MySQL como uma alternativa ao modelo Open Core. A essência do BSL é que o código de funcionalidade estendida está inicialmente disponível para modificação, mas por algum tempo ele pode ser usado gratuitamente apenas sujeito a condições adicionais, que exigem a compra de uma licença comercial para contornar.

Os termos de licença adicionais do projeto Dragonfly exigem que o código seja convertido para a licença Apache 2.0 somente em 1º de junho de 2027. Até então, a licença permite o uso do código apenas para garantir o funcionamento de seus serviços e produtos, mas proíbe o uso para criar serviços de nuvem pagos que atuam como um complemento ao Dragonfly.

Dragonfly afirma ser o sistema de armazenamento de memória mais rápido do mundo, de acordo com desenvolvedores e benchmarks. Comparado ao Redis, o Dragonfly alcançou um aumento de desempenho de 25x e uma redução de 3x no consumo de memória em cargas de trabalho típicas. Um único servidor Dragonfly pode processar milhões de solicitações por segundo, por exemplo, em um ambiente Amazon EC2 c6gn.16xlarge, uma taxa de transferência de 3,8 milhões de solicitações por segundo foi alcançada.

Em testes de armazenamento de 5 GB, o Dragonfly exigiu 30% menos memória que o Redis. Durante a criação de snapshots usando o comando "bgsave", o consumo de memória aumenta, mas nos horários de pico é mantido quase três vezes menos do que no Redis, e a própria operação de gravação de snapshots é muito mais rápida (no teste, escrevi um snapshot em Dragonfly em 30 segundos e Redis - em 42 segundos).

O alto desempenho é alcançado graças a uma arquitetura multi-thread sem recursos compartilhados ( shared-nothing ), o que implica que um controlador separado e independente com seu próprio pedaço de dados seja anexado a cada thread, trabalhando sem mutexes ou spin-locks. Bloqueios VLL leves são usados ​​para garantir atomicidade ao lidar com várias chaves. Para armazenar informações de forma eficiente na memória, é utilizada a estrutura dashtable, que implementa uma espécie de tabelas de hash particionadas.

Das funções disponíveis em a primeira versão destaca o suporte ao protocolo RESP2 e 130 comandos Redis, que corresponde aproximadamente à funcionalidade da versão Redis 2.8.

Além disso, Dragonfly suporta todos os comandos do Memcached, exceto CAS (verificar e definir), fornece suporte para operações assíncronas para criar instantâneos, fornece consumo de memória previsível, fornece um interpretador Lua 5.4 integrado e suporta tipos de dados complexos, como hashes, conjuntos e listas (ZSET, HSET, LIST, SETS e STRING).

Separadamente, um modo de cache está disponível, em que os dados antigos são automaticamente substituídos por novos dados quando a memória livre se esgota. É possível vincular os dados por toda a vida durante a qual os dados são considerados relevantes.

O estado de armazenamento pode ser liberado para o disco em segundo plano para recuperação posterior após uma reinicialização. Para gerenciar o sistema, são fornecidos um console HTTP (vincula-se à porta TCP 6379) e uma API para retornar métricas compatíveis com Prometheus. Em versões futuras, planejamos expandir o suporte para comandos Redis e implementar a capacidade de replicar armazenamento para failover e balanceamento de carga.

Finalmente, se você estiver interessado em aprender mais sobre isso, saiba que o código do Dragonfly é escrito em C/C++ e é distribuído sob a licença BSL (Business Source License).

Você pode consultar sobre o projeto no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.