Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis

Microsoft ha publicado el código fuente del sistema NoSQL Garnet, diseñado para crear almacenes de caché y compatible con las bibliotecas de cliente existentes para el almacenamiento Redis. Garnet admite la creación de clústeres escalables para la caché de datos, los cuales pueden utilizar replicación, migración de claves y segmentación de datos entre los nodos del clúster. El proyecto está escrito en C# con un núcleo de almacenamiento en C++, es de código abierto bajo la licencia MIT y puede funcionar en todas las plataformas compatibles con .NET (las plataformas primarias anunciadas son Linux y Windows).

Para el almacenamiento de datos se utiliza el motor Tsavorite (un fork del almacén Microsoft FASTER), que admite procesamiento de solicitudes multihilo, transacciones, grabación de cambios en modo no bloqueante (checkpointing), recuperación ante fallos, almacenamiento de copias redundantes y registro de operaciones. El manejador de red en Garnet está construido utilizando la arquitectura de memoria compartida, propuesta por el proyecto de investigación ShadowFax. El procesamiento de TLS y la interacción con el almacén se llevan a cabo en un solo hilo, lo que permite evitar gastos generales en el cambio de hilos y utilizar de manera más eficiente el caché de CPU durante la transferencia de datos a través de la red.

La arquitectura de Garnet separa la lógica de análisis y procesamiento de solicitudes de las operaciones con el almacenamiento. Los datos se almacenan utilizando dos almacenes en formato clave-valor, implementados sobre la biblioteca Tsavorite. El primer almacén "principal" está optimizado para la ejecución rápida de operaciones con cadenas, mientras que el segundo almacén "de objetos" está optimizado para almacenar objetos complejos y tipos de datos avanzados, como hashes y listas. Los tipos de datos en el segundo almacén están implementados utilizando bibliotecas de .NET. Los datos se almacenan en el montón (C# heap), lo que permite actualizarlos de manera eficiente, y en formato serializado en disco.

Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis

Características de Garnet:

  • Es posible desplegar almacenes multinivel que abarcan memoria RAM, unidades SSD y almacenamiento en la nube, donde los datos menos demandados se desplazan a almacenes más lentos para crear cachés que son más grandes que la memoria RAM.
  • Soporte ampliado para dispositivos, permitiendo la creación de capas optimizadas para trabajar con diferentes dispositivos, como capas para SSD, discos duros y almacenamiento en la nube de Azure.
  • Un mecanismo eficiente de reutilización de espacio liberado en la memoria, previniendo la fragmentación.
  • Límites configurables sobre la cantidad de memoria utilizada para índices, registros y almacenamiento de objetos.
  • Para acceder al almacenamiento se utiliza el protocolo RESP, lo que permite usar Garnet con clientes Redis sin modificaciones.
  • Soporte para almacenar tanto valores de cadena como estructuras de datos complejas, como listas, hashes, conjuntos, listas ordenadas y datos de geolocalización. Posibilidad de definir el tiempo de vida de una clave.
  • Existencia de una API para realizar consultas analíticas (HLL/Hyperloglog, Bitmap), transacciones (MULTI/EXEC) y el uso de la paradigmática de publicación/suscripción.
  • Disponibilidad de herramientas para una gestión flexible del acceso a través de ACL.
  • Posibilidad de definir la configuración en formato JSON o redis.conf.
  • Soporte para la conexión de manejadores de red adicionales. Posibilidad de cifrar el tráfico utilizando TLS (basado en SslStream).
  • Posibilidad de crear extensiones en el lenguaje C#, que implementen operaciones adicionales sobre cadenas y objetos.
  • Soporte para procedimientos almacenados transaccionales que abarcan múltiples claves.
  • Posibilidad de restaurar el estado desde una posición guardada previamente (checkpoint-recovery). Existencia de un modo de solo agregar (AOF, archivo de solo append), donde todos los datos antiguos permanecen disponibles y no son reemplazados.
  • Soporte para la creación de clústeres de almacenamiento con replicación, segmentación (Sharding), migración dinámica de claves entre nodos y recuperación de nodos fallidos.
  • Alta rendimiento y baja latencia al procesar consultas. Procesamiento eficiente de solicitudes en lotes pequeños con un gran número de sesiones de clientes, permitiendo lograr una capacidad de procesamiento (número de solicitudes procesadas por segundo) significativamente superior a la de soluciones competitivas. Al ejecutarse en máquinas virtuales En la nube de Azure, en la mayoría de los casos, la latencia de las solicitudes de los clientes no supera los 300 microsegundos. En las pruebas realizadas, Garnet supera significativamente a Redis, Dragonfly y KeyDB en rendimiento y capacidad de respuesta. En algunas pruebas, Garnet supera a los sistemas competidores por diez veces.
    Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis
    Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis
    Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis
    Microsoft ha abierto el código del almacenamiento Garnet, compatible con Redis

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster