Nova tecnologia de armazenamento de cache remoto da Microsoft Research, 'Garnet'
(github.com/microsoft)-
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
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.
Ó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.
É 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.
Como o Garnet é multithread,
MSETnão é atômico. Se você quiser uma versão atômica deMSET, precisa expressá-la como uma transação (stored procedure).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.