Rilascio di Dragonfly 1.0, sistema per la memorizzazione nella cache dei dati in memoria.

È stato rilasciato il sistema di memorizzazione nella cache e archiviazione dei dati in memoria Dragonfly, che gestisce i dati nel formato chiave/valore e può essere utilizzato come soluzione leggera per accelerare le prestazioni di siti ad alto traffico, memorizzando nella cache le richieste lente al DBMS e i dati temporanei in memoria. Dragonfly supporta i protocolli Memcached e Redis, permettendo di utilizzare già librerie client esistenti e di migrare i progetti che utilizzano Memcached e Redis su Dragonfly senza riscrivere il codice.

Rispetto a Redis, in scenari di carico tipici in ambiente Amazon EC2 c6gn.16xlarge si è ottenuto un aumento delle prestazioni di 25 volte (3,8 milioni di richieste al secondo). Rispetto a Memcached in ambiente AWS c6gn.16xlarge, Dragonfly è stato in grado di eseguire 4,7 volte più richieste al secondo in scrittura (3,8 milioni contro 806.000) e 1,77 volte più richieste al secondo in lettura (3,7 milioni contro 2,1 milioni).

Rilascio di Dragonfly 1.0, sistema per la memorizzazione nella cache dei dati in memoria.

Nei test di archiviazione di 5 GB di dati, Dragonfly ha richiesto il 30% in meno di memoria rispetto a Redis. Durante la creazione di snapshot con il comando "bgsave" il consumo di memoria aumenta, ma nei momenti di picco è rimasto quasi tre volte inferiore rispetto a Redis, e l'operazione di scrittura dello snapshot è stata eseguita significativamente più velocemente (nel test, lo snapshot in Dragonfly è stato registrato in 30 secondi, mentre in Redis in 42 secondi).

Rilascio di Dragonfly 1.0, sistema per la memorizzazione nella cache dei dati in memoria.

Le alte prestazioni sono raggiunte grazie a un'architettura multi-threading senza condivisione delle risorse (shared-nothing), che prevede che a ogni thread venga assegnato un gestore isolato con la propria porzione di dati, che opera senza mutex e spin-lock. Per garantire l'atomicità quando si lavora con più chiavi, vengono utilizzati blocchi leggeri VLL. Per una memorizzazione efficace delle informazioni in memoria, si utilizza una struttura dashtable che implementa una variante delle hash table suddivise.

Alcune funzionalità di Dragonfly:

  • Modalità di caching, in cui si garantisce automaticamente l'evacuazione dei dati più vecchi in favore di quelli nuovi al raggiungimento della memoria disponibile.
  • Supporto per l'associazione dei dati a un tempo di vita, durante il quale i dati sono considerati validi.
  • Supporto per il ripristino dello stato del datastore su disco in background per un successivo recupero dopo un riavvio.
  • Presenza di una console HTTP (assegnata alla porta TCP 6379) per la gestione del sistema e API per la restituzione delle metriche, compatibile con Prometheus.
  • Supporto per 185 comandi Redis, corrispondenti approssimativamente alla funzionalità della versione Redis 5.
  • Supporto per tutti i comandi Memcached, tranne CAS (check-and-set).
  • Supporto per operazioni asincrone per la creazione di snapshot.
  • Consumo di memoria prevedibile.
  • Interpreter Lua 5.4 integrato.
  • Supporto per tipi di dati complessi come hash, set, liste (ZSET, HSET, LIST, SET e STRING) e dati in formato JSON.
  • Supporto alla replicazione dello storage per garantire la resilienza e il bilanciamento del carico.

Il codice di Dragonfly è scritto in C/C++ e viene distribuito sotto licenza BSL (Business Source License). La licenza BSL è stata proposta dai cofondatori di MySQL come alternativa al modello Open Core. La sostanza del BSL è che il codice delle funzionalità avanzate è inizialmente disponibile per modifiche, ma per un certo periodo può essere utilizzato gratuitamente solo a determinate condizioni, per eludere le quali è necessario acquistare una licenza commerciale. I termini di licenza aggiuntivi del progetto Dragonfly prevedono la conversione del codice in licenza Apache 2.0 il 15 marzo 2028. Fino a quel momento, la licenza consente l'uso del codice solo per garantire il funzionamento dei propri servizi e prodotti, ma vieta l'uso per creare servizi cloud a pagamento che si sovrappongano a Dragonfly.

La versione Dragonfly 1.0 è notevole per l'implementazione del supporto alla replicazione dei dati da un server primario server a uno secondario. In questo modo, Dragonfly può essere configurato per essere utilizzato come storage secondario, ricevendo dati dal server primario sia su base Dragonfly che su base Redis. L'API per la gestione della replicazione è compatibile con Redis e si basa sull'uso dei comandi ROLE e REPLICAOF (SLAVEOF).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster