4 puntos por GN⁺ 2024-03-20 | 1 comentarios | Compartir por WhatsApp
  • Introducción a Garnet

    • Garnet, un nuevo almacén de caché remota desarrollado por Microsoft Research, ofrece varias ventajas distintivas.
    • Al basarse en el popular protocolo wire RESP, se pueden usar sin modificaciones los clientes de Redis disponibles en la mayoría de los lenguajes de programación.
    • Ofrece mejor rendimiento y escalabilidad con muchas conexiones de cliente y trabajos en lotes pequeños, lo que contribuye a reducir costos en apps y servicios a gran escala.
    • Logra una latencia de cliente extremadamente baja (menos de 300 microsegundos en el percentil 99.9) usando VM de Azure con TCP acelerado habilitado.
    • Basado en tecnología moderna de .NET, Garnet es multiplataforma, extensible y tiene un diseño moderno.
    • Aprovecha el amplio ecosistema de librerías de .NET para ampliar el alcance de la API y ofrecer oportunidades abiertas de optimización.
  • Resumen de funciones

    • Garnet implementa varias API, incluidas operaciones con cadenas primitivas, analíticas y de objetos.
    • Puede manejar transacciones multi-clave mediante transacciones RESP del lado del cliente y procedimientos almacenados del lado del servidor escritos en C#.
    • Los usuarios pueden definir operaciones personalizadas para cadenas primitivas y nuevos tipos de objetos aprovechando la comodidad y seguridad de C#.
  • Vista previa de rendimiento

    • El sitio web presenta algunos resultados clave que comparan Garnet con los principales almacenes de caché open source.
  • Aspectos destacados del diseño

    • El diseño de Garnet replantea toda la pila de un almacén de caché, desde la recepción de paquetes en la red hasta el análisis y procesamiento de operaciones de base de datos y la interacción con el almacenamiento.
    • La capa de red de Garnet hereda un diseño de memoria compartida inspirado en una investigación previa, ShadowFax.
    • El diseño de almacenamiento de Garnet está compuesto por dos almacenes clave-valor Tsavorite determinados por un registro de operaciones unificado.
  • Modo clúster

    • Además de la ejecución en un solo nodo, Garnet soporta un modo clúster que puede crear y administrar despliegues con sharding y replicación.
    • El clúster todavía está en desarrollo.
  • Siguientes pasos

    • Se puede ir al sitio de documentación o entrar directamente a la sección de inicio o a la sección de lanzamientos.
  • Licencia

    • Este proyecto está licenciado bajo la licencia MIT, y se puede consultar el archivo LICENSE.
  • Privacidad

    • La información sobre privacidad se puede encontrar en el sitio web de privacidad de Microsoft.
  • Cómo contribuir

    • Este proyecto recibe con gusto contribuciones y sugerencias, y la mayoría de las contribuciones requieren aceptar un CLA.
    • Se adoptó el Código de Conducta Open Source de Microsoft; se puede consultar el FAQ del código de conducta o, si hay preguntas o comentarios adicionales, contactar a opencode@microsoft.com.
  • Marcas comerciales

    • Este proyecto puede incluir marcas comerciales o logotipos de proyectos, productos o servicios, y el uso de marcas comerciales o logotipos de Microsoft debe seguir las directrices de marcas y branding de Microsoft.

Opinión de GN⁺

  • Garnet es un nuevo almacén de caché que es compatible con los clientes existentes de Redis y al mismo tiempo ofrece mayor rendimiento y escalabilidad, por lo que podría resultar atractivo para empresas que operan servicios cloud a gran escala.
  • Se necesitan datos de largo plazo sobre qué tan estable funciona esta tecnología en entornos reales y qué ventajas prácticas ofrece frente a soluciones de caché existentes.
  • El hecho de que el modo clúster de Garnet siga en desarrollo puede ser un punto importante a considerar para quienes evalúan despliegues a gran escala.
  • Como Garnet se ofrece como open source, existe la posibilidad de que la comunidad aporte más funciones y mejoras, lo que podría contribuir a elevar la madurez de la tecnología.
  • Antes de adoptar Garnet, habría que considerar la compatibilidad con los sistemas existentes, el costo frente a la mejora de rendimiento y los posibles costos de migración.

1 comentarios

 
GN⁺ 2024-03-20
Comentarios en Hacker News
  • Según la gráfica de rendimiento de los benchmarks, el throughput del comando GET de Garnet es más de 10 veces mayor que el de Dragonfly. La latencia del percentil 50 es ligeramente más alta que la de Dragonfly, pero la latencia del percentil 99 es ligeramente más baja. El throughput y la latencia de Garnet y Dragonfly son muy superiores a los de Redis, lo que sugiere que Redis necesita una optimización de rendimiento considerable.

    Tsavorite, la capa de almacenamiento de Garnet, se deriva de OSS FASTER e incluye funciones sólidas de base de datos como escalabilidad de hilos, soporte de almacenamiento por niveles (memoria, SSD, almacenamiento en la nube), checkpointing rápido no bloqueante, recuperación, logging de operaciones para durabilidad, soporte para transacciones multi-clave y una mejor gestión y reutilización de memoria.

  • Es una gran noticia para quienes necesitan ejecutar Redis directamente en Microsoft Windows Server (o algo compatible) sin depender de WSL2. Antes existía un port de Redis, que ya no tiene soporte, y había problemas de uso de memoria (presuntamente por archivos mapeados en memoria).

    Es muy interesante ver que está escrito en C#, y me interesa dedicar tiempo a explorar el código.

  • Es una alternativa a Redis con un rendimiento impresionante cuando se ejecuta en un stack real fuera de Azure. Me pregunto cómo será en el mundo real.

  • Es interesante ver a Microsoft y al equipo de .NET construir proyectos de infraestructura muy impresionantes. Yarp hace de reverse proxy/API gateway y demás, y ahora está Garnet para caché en memoria.

    Parece que internamente tienen muchas necesidades y están dispuestos a compartirlas.

  • Como Garnet es multihilo, MSET no es atómico. Si quieres una versión atómica de MSET, debes expresarla como una transacción (stored procedure).

    Me cuesta entender por qué no envuelven internamente el comando en una transacción para hacerlo atómico. Qué otras "trampas" de atomicidad habrá.

  • Viendo los comentarios aquí, ¿ya nadie usa memcached?

  • Microsoft Research a veces saca proyectos impresionantes. Debe ser divertido hacer I+D y recibir un sueldo por ello. Ojalá las grandes empresas hicieran más proyectos de I+D de este estilo que ayuden a la industria. Si Hashicorp sale al mercado, espero que la adquiera una buena empresa.

  • Este proyecto se ve realmente bien. Ojalá eventualmente reemplace el recurso "Azure Cache for Redis". Actualmente es lento, es un fork de Redis hecho para ejecutarse en Windows y tarda casi una hora en crear una instancia.

  • Me pregunto en qué casos este sistema no rinde bien. También me gustaría ver benchmarks en tipos de instancia más pequeños. 72 vCPU es una instancia bastante grande.