21 puntos por xguru 2024-04-10 | 1 comentarios | Compartir por WhatsApp

Motivación de su creación

  • Entre las librerías de caché para Go no existe una que sea realmente libre de contención. La mayoría no son más que mapas con mutex y políticas de expulsión
  • Esto hace que no alcancen la velocidad de cachés de otros lenguajes (por ejemplo, Caffeine)
  • Ristretto, la caché más rápida de Dgraph Labs, era hasta un 30% más rápida que sus competidores (Otter es mucho más rápida), pero su hit ratio no era bueno
  • En aplicaciones reales, esto puede ser un problema porque no quieres chocar con el rendimiento de la librería de caché
  • Como resultado, querían crear la caché más rápida y fácil de usar

Funciones principales

  • API simple: basta con configurar los parámetros deseados en el Builder y usarla
  • Configuración automática: se configura automáticamente según la capacidad de procesamiento en paralelo de la aplicación
  • Genéricos: se puede usar de forma segura cualquier tipo comparable como clave y cualquier tipo como valor
  • TTL: los valores vencidos se eliminan automáticamente de la caché
  • Expulsión basada en costo: admite expulsión según el costo de cada elemento
  • Rendimiento sobresaliente: actualmente es la librería de caché más rápida y supera ampliamente a los productos competidores (Theine, Ristretto, Bigcache, Fastcache)
  • Excelente hit ratio: utiliza el nuevo algoritmo S3-FIFO, que muestra resultados sobresalientes

1 comentarios

 
xguru 2024-04-10

El nombre me sonaba familiar, así que lo busqué y encontré esto.
Otter: un modelo multimodal con ajuste de instrucciones dentro del contexto
Parece que ya no deberíamos crear cosas usando nombres de animales. A menos que sea algo muy raro, casi todos ya existen.

La opinión del análisis de IA también me pareció buena, así que la agrego.

Opinión de GN⁺

  • Esta biblioteca de caché open source parece ser muy útil para desarrolladores de Go. En particular, puede convertirse en una alternativa para superar los límites de rendimiento de las bibliotecas de caché existentes en servicios que requieren alto desempeño.
  • Resulta impresionante que, al aplicar algoritmos basados en un paper, haya logrado un rendimiento competitivo frente a bibliotecas existentes. Antes de aplicarla en un servicio real, sería necesario validar su desempeño con diversos benchmarks.
  • Parece ofrecer también una buena experiencia de desarrollo, ya que se puede usar fácilmente con una API simple y además soporta genéricos de las versiones recientes de Go.
  • Entre bibliotecas de caché similares para Go están groupcache, fastcache, ristretto y freecache. Habría que comparar bien sus características de rendimiento y facilidad de uso.
  • Parece más útil para servicios que manejan tráfico de gran volumen que para servicios personales o pequeños. Hay que pensar bien cuánto tamaño asignar a la caché y cada cuánto hacer la evicción. Además, si se depende demasiado de la caché, pueden surgir problemas de consistencia, así que hace falta tener cuidado.