4 pontos por GN⁺ 2024-03-20 | 1 comentários | Compartilhar no WhatsApp
  • Introdução ao Garnet

    • Garnet, um novo armazenamento de cache remoto desenvolvido pela Microsoft Research, oferece várias vantagens únicas.
    • Com base no popular protocolo de rede RESP, é possível usar clientes Redis disponíveis na maioria das linguagens de programação sem nenhuma modificação.
    • Oferece melhor throughput e escalabilidade com muitas conexões de cliente e cargas em pequenos lotes, ajudando a reduzir custos em apps e serviços de grande escala.
    • Alcança latência de cliente extremamente baixa (menos de 300 microssegundos no percentil 99,9) usando VMs da nuvem Azure com TCP acelerado ativado.
    • Baseado em tecnologias .NET modernas, o Garnet é multiplataforma, escalável e tem um design moderno.
    • Aproveita o rico ecossistema de bibliotecas do .NET para ampliar o alcance da API e oferecer oportunidades abertas para otimização.
  • Resumo de funcionalidades

    • O Garnet implementa várias APIs, incluindo operações com strings brutas, analíticas e objetos.
    • Pode processar transações multichave por meio de transações RESP no lado do cliente e procedures armazenadas no lado do servidor escritas em C#.
    • Os usuários podem definir operações personalizadas para strings brutas e novos tipos de objeto, aproveitando a praticidade e a segurança do C#.
  • Prévia de desempenho

    • O site apresenta alguns resultados principais de comparação entre o Garnet e os principais armazenamentos de cache open source.
  • Destaques de design

    • O design do Garnet repensa toda a pilha de armazenamento em cache, desde o recebimento de pacotes da rede até a análise e o processamento de operações do banco de dados e a execução de interações com o armazenamento.
    • A camada de rede do Garnet herda um design de memória compartilhada inspirado em uma pesquisa anterior, o ShadowFax.
    • O design de armazenamento do Garnet é composto por dois armazenamentos chave-valor Tsavorite, determinados por um log de operações unificado.
  • Modo cluster

    • Além da execução em nó único, o Garnet oferece suporte a um modo cluster que pode criar e gerenciar implantações com sharding e replicação.
    • O cluster ainda está em desenvolvimento.
  • Próximos passos

    • É possível acessar o site de documentação ou ir diretamente para a seção de introdução ou para a seção de releases.
  • Licença

    • Este projeto é licenciado sob a licença MIT; consulte o arquivo LICENSE.
  • Privacidade

    • Informações sobre privacidade podem ser encontradas no site de privacidade da Microsoft.
  • Como contribuir

    • Este projeto aceita contribuições e sugestões, e a maioria das contribuições exige concordância com o CLA.
    • Foi adotado o Código de Conduta Open Source da Microsoft; consulte o FAQ do código de conduta ou, se tiver dúvidas ou comentários adicionais, entre em contato pelo e-mail opencode@microsoft.com.
  • Marcas registradas

    • Este projeto pode incluir marcas registradas ou logotipos de projetos, produtos ou serviços, e o uso de marcas registradas ou logotipos da Microsoft deve seguir as diretrizes de marcas e branding da Microsoft.

Opinião do GN⁺

  • O Garnet é um novo armazenamento de cache que mantém compatibilidade com clientes Redis existentes e, ao mesmo tempo, oferece maior desempenho e escalabilidade, o que pode torná-lo atraente para empresas que operam grandes serviços em nuvem.
  • São necessários dados de longo prazo sobre o quão estável essa tecnologia funciona em ambientes reais e quais benefícios práticos ela oferece em comparação com soluções de cache existentes.
  • O fato de o modo cluster do Garnet ainda estar em desenvolvimento pode ser um ponto importante para usuários que estejam considerando implantações em grande escala.
  • Como o Garnet é oferecido como open source, há potencial para que a comunidade contribua com mais recursos e melhorias, o que pode ajudar a elevar o grau de maturidade da tecnologia.
  • Antes de adotar o Garnet, é preciso considerar a compatibilidade com sistemas existentes, o custo em relação ao ganho de desempenho e os possíveis custos de migração.

1 comentários

 
GN⁺ 2024-03-20
Comentários no Hacker News
  • Segundo o gráfico de desempenho dos benchmarks, a taxa de processamento do comando GET do Garnet é mais de 10 vezes maior que a do Dragonfly. A latência no percentil 50 é ligeiramente maior que a do Dragonfly, mas a latência no percentil 99 é um pouco menor. A taxa de processamento e a latência de Garnet e Dragonfly são muito superiores às do Redis, o que sugere que o Redis precisa de uma otimização de desempenho considerável.

    A camada de armazenamento do Garnet, Tsavorite, é derivada do OSS FASTER e inclui recursos robustos de banco de dados, como escalabilidade de threads, suporte a armazenamento em camadas (memória, SSD, armazenamento em nuvem), checkpointing rápido sem bloqueio, recuperação, logging de operações para durabilidade, suporte a transações com múltiplas chaves e melhor gerenciamento e reutilização de memória.

  • Ótima notícia para quem precisa executar Redis diretamente no Microsoft Windows Server, sem depender do WSL2, ou alguma alternativa compatível. Antes, existia um port do Redis que não é mais suportado, com problemas de uso de memória, provavelmente por causa de arquivos mapeados em memória.

    É muito interessante ver algo escrito em C#, e tenho interesse em dedicar um tempo para explorar o código.

  • É um substituto do Redis com desempenho impressionante quando roda em uma stack real fora do Azure. Fico curioso para saber como ele se comporta no mundo real.

  • É interessante ver a Microsoft e a equipe do .NET construindo projetos de infraestrutura tão impressionantes. O Yarp cuida de reverse proxy/API gateway etc., e agora há o Garnet para cache em memória.

    Parece que eles têm muitas necessidades internas e disposição para compartilhar.

  • Como o Garnet é multithread, MSET não é atômico. Se você quiser uma versão atômica de MSET, precisa expressá-la como uma transação (stored procedure).

    Tenho dificuldade para entender por que não encapsulam isso internamente em uma transação para tornar o comando atômico. Quais outras "pegadinhas" de atomicidade existem?

  • Vendo os comentários aqui, parece que ninguém mais usa memcached?

  • A Microsoft Research às vezes lança projetos impressionantes. Deve ser divertido receber para fazer P&D. Seria bom se as grandes empresas fizessem mais projetos de P&D que ajudassem o setor. Se a Hashicorp for colocada à venda, espero que uma boa empresa a adquira.

  • Este projeto parece realmente muito bom. Espero que, no fim das contas, substitua o recurso "Azure Cache for Redis". Hoje ele é lento, é um fork do Redis feito para rodar no Windows, e leva quase uma hora para criar uma instância.

  • Fico curioso para saber em que ponto este sistema não vai bem. Também queria ver benchmarks em tipos de instância menores. 72 vCPU é uma instância bem grande.