21 pontos por xguru 2024-04-10 | 1 comentários | Compartilhar no WhatsApp

Motivação da criação

  • Entre as bibliotecas de cache para Go, não há nenhuma realmente livre de contenção. A maioria é apenas um mapa com mutex e política de remoção
  • Isso não alcança a velocidade de caches de outras linguagens, como o Caffeine
  • O Ristretto, o cache mais rápido da Dgraph Labs, era até 30% mais rápido que os concorrentes (o Otter é muito mais rápido), mas não tinha uma boa taxa de acerto
  • Em aplicações reais, isso pode ser um problema, porque você não quer esbarrar no desempenho da biblioteca de cache
  • Como resultado, a ideia foi criar o cache mais rápido e mais fácil de usar

Principais recursos

  • API simples: basta definir os parâmetros desejados no Builder e usar
  • Configuração automática: é configurado automaticamente com base nos recursos de paralelismo da aplicação
  • Genéricos: qualquer tipo comparável pode ser usado com segurança como chave, e qualquer tipo pode ser usado como valor
  • TTL: valores expirados são removidos automaticamente do cache
  • Remoção baseada em custo: oferece suporte à remoção com base no custo de cada item
  • Excelente throughput: atualmente é a biblioteca de cache mais rápida, superando com folga os concorrentes (Theine, Ristretto, Bigcache, Fastcache)
  • Ótima taxa de acerto: usa o novo algoritmo S3-FIFO, que apresenta resultados excelentes

1 comentários

 
xguru 2024-04-10

O nome parecia familiar, então fui procurar e tinha isso aqui
Otter: modelo multimodal com ajuste de comandos dentro do contexto
Acho que já está na hora de parar de criar coisas com nomes de animais. A menos que seja algo muito raro, quase todos já existem.

A análise da IA também pareceu boa, então resolvi acrescentar.

Opinião do GN⁺

  • Esta biblioteca de cache open source parece ser muito útil para desenvolvedores Go. Especialmente em serviços que exigem alto desempenho, pode ser uma alternativa para superar os limites de performance das bibliotecas de cache existentes
  • É impressionante que tenha garantido um desempenho competitivo em relação às bibliotecas existentes ao aplicar algoritmos baseados em artigo acadêmico. Antes de aplicar em produção, vale verificar o desempenho com vários benchmarks
  • Parece ter boa usabilidade para desenvolvimento, com uma API simples e suporte a generics das versões mais recentes do Go
  • Bibliotecas de cache Go semelhantes incluem groupcache, fastcache, ristretto e freecache. Parece importante comparar bem as características de desempenho e a facilidade de uso
  • Parece ser mais útil para serviços que lidam com tráfego de grande volume do que para serviços pessoais ou de pequeno porte. É preciso pensar bem no tamanho do cache e em qual deve ser o ciclo de eviction. Além disso, se houver dependência excessiva do cache, podem surgir problemas de consistência, então é preciso ter cuidado.