Pubblicazione di Dragonfly 1.0, un sistema per la memorizzazione dei dati nella cache in memoria

È stata rilasciata la nuova sistema di caching e memorizzazione dei dati in memoria Dragonfly, che gestisce i dati in formato chiave/valore e può essere utilizzata come una soluzione leggera per accelerare le prestazioni di siti web ad alto carico, memorizzando nella cache le richieste lente ai database e i dati intermedi in memoria. Dragonfly supporta i protocolli Memcached e Redis, permettendo di utilizzare le librerie client esistenti e di migrare progetti che usano Memcached e Redis su Dragonfly senza dover rielaborare il codice.

Rispetto a Redis, Dragonfly ha raggiunto un incremento delle prestazioni fino a 25 volte in situazioni di carico tipiche nell'ambiente Amazon EC2 c6gn.16xlarge (3,8 milioni di richieste al secondo). Rispetto a Memcached nell'ambiente AWS c6gn.16xlarge, Dragonfly è riuscito a 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).

Pubblicazione di Dragonfly 1.0, un sistema per la memorizzazione dei dati nella cache in memoria

Nei test sullo storage, Dragonfly ha richiesto il 30% in meno di memoria rispetto a Redis per 5 GB di dati. Durante la creazione di snapshot con il comando 'bgsave', l'uso della memoria aumenta, ma nei picchi è rimasto quasi tre volte inferiore rispetto a Redis, mentre l'operazione di scrittura dello snapshot è stata eseguita significativamente più rapidamente (nel test, lo snapshot in Dragonfly è stato salvato in 30 secondi, mentre in Redis in 42 secondi).

Pubblicazione di Dragonfly 1.0, un sistema per la memorizzazione dei dati nella cache in memoria

L'alta prestazione è raggiunta grazie a un'architettura multi-threaded senza condivisione delle risorse (shared-nothing), che implica che a ciascun thread è associato un gestore isolato con il proprio insieme di dati, operante senza mutex e spin-lock. Per garantire l'atomicità nelle operazioni su più chiavi, vengono utilizzati leggeri blocchi VLL. Per una memorizzazione efficiente delle informazioni in memoria, si utilizza una struttura dashtable, che implementa una varietà di tabelle hash partizionate.

Alcune caratteristiche di Dragonfly:

  • Modalità di caching in cui si garantisce automaticamente la sostituzione dei dati più vecchi con i nuovi una volta esaurita la memoria disponibile.
  • Supporto per l'associazione di una durata di vita ai dati, durante la quale i dati sono considerati validi.
  • Supporto per il salvataggio dello stato del repository su disco in background per il ripristino successivo dopo un riavvio.
  • Disponibilità di una console HTTP (collegata alla porta TCP 6379) per la gestione del sistema e di un'API per la restituzione delle metriche, compatibile con Prometheus.
  • Supporto per 185 comandi di Redis, corrispondenti all'incirca alle funzionalità di Redis 5.
  • Supporto per tutti i comandi di Memcached, tranne che per CAS (check-and-set).
  • Supporto per operazioni asincrone per la creazione di snapshot.
  • Consumo di memoria prevedibile.
  • Interprete Lua 5.4 integrato.
  • Supporto per tipi di dati complessi, come hash, insiemi, liste (ZSET, HSET, LIST, SETS e STRING) e dati in formato JSON.
  • Supporto per la replica del repository per garantire la resilienza e il bilanciamento del carico.

Il codice di Dragonfly è scritto in C/C++ ed è distribuito sotto licenza BSL (Business Source License). La licenza BSL è stata proposta dai co-fondatori di MySQL come alternativa al modello Open Core. Il concetto di BSL è che il codice per le funzionalità avanzate è inizialmente disponibile per la modifica, ma per un certo periodo può essere utilizzato gratuitamente solo rispettando ulteriori condizioni, per aggirare le quali è necessaria l'acquisizione di una licenza commerciale. Le condizioni di licenza aggiuntive del progetto Dragonfly prevedono la transizione del codice alla licenza Apache 2.0 il 15 marzo 2028. Fino a quel momento, la licenza consente l'utilizzo del codice solo per lo sviluppo dei propri servizi e prodotti, ma vieta l'uso per la creazione di servizi cloud a pagamento che si sovrappongono a Dragonfly.

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

Fonte: opennet.ru

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