Il progetto Dragonfly sviluppa una sostituzione più veloce per Redis e Memcached

È disponibile la prima versione del sistema di caching in memoria Dragonfly, che supporta i protocolli Memcached e Redis, ma consente di eseguire query con prestazioni significativamente superiori e un minor consumo di memoria. Il sistema gestisce i dati nel formato chiave/valore e può essere utilizzato come soluzione leggera per accelerare le prestazioni di siti web ad alta richiesta, memorizzando in cache query lente al database e dati temporanei in memoria. Il codice di Dragonfly è scritto in C/C++ ed è distribuito sotto la licenza BSL (Business Source License).

La licenza BSL è stata proposta dai co-fondatori di MySQL come alternativa al modello Open Core. La sostanza della BSL è che il codice delle funzionalità avanzate è inizialmente disponibile per la modifica, ma per un certo periodo può essere utilizzato gratuitamente solo se si rispettano condizioni aggiuntive, il cui bypass richiede l'acquisto di una licenza commerciale. Le ulteriori condizioni di licenza del progetto Dragonfly stabiliscono che il passaggio del codice alla licenza Apache 2.0 avverrà solo il 1° giugno 2027. Fino a tale data, la licenza consente l'uso del codice solo per garantire il funzionamento dei propri servizi e prodotti, ma vieta l'applicazione per la creazione di servizi cloud a pagamento che fungono da estensione di Dragonfly.

Secondo gli sviluppatori e i test dimostrati, Dragonfly ambisce al titolo di sistema di archiviazione in memoria più veloce. Rispetto a Redis, Dragonfly ha mostrato un aumento delle prestazioni di 25 volte e una riduzione del consumo di memoria di tre volte sotto carichi di lavoro tipici. un server Dragonfly può gestire milioni di richieste al secondo; ad esempio, in un ambiente Amazon EC2 c6gn.16xlarge, si è raggiunta una prestazione di 3,8 milioni di richieste al secondo.

Il progetto Dragonfly sviluppa una sostituzione più veloce per Redis e Memcached

Nei test di memorizzazione 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 picchi rimane quasi tre volte inferiore rispetto a Redis, e l'operazione di scrittura dello snapshot viene completata significativamente più velocemente (il test ha mostrato che lo snapshot in Dragonfly è stato registrato in 30 secondi, mentre in Redis ci sono voluti 42 secondi).

Il progetto Dragonfly sviluppa una sostituzione più veloce per Redis e Memcached

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.

Tra le funzionalità disponibili nella prima versione, si segnala il supporto del protocollo RESP2 e 130 comandi Redis, corrispondenti all'incirca alla funzionalità della versione Redis 2.8. Inoltre, Dragonfly supporta tutti i comandi memcached tranne CAS (check-and-set), offre supporto per operazioni asincrone per la creazione di snapshot, garantisce un consumo di memoria prevedibile, fornisce un interprete Lua 5.4 integrato e supporta tipi di dati complessi, come hash, insiemi e liste (ZSET, HSET, LIST, SETS e STRING).

È disponibile una modalità di caching separata, in cui i dati più recenti sovrascrivono automaticamente i dati più vecchi una volta esaurita la memoria disponibile. È possibile anche associare un tempo di vita ai dati, entro il quale vengono considerati validi. Lo stato del storage può essere salvato su disco in background per un successivo recupero dopo un riavvio. La gestione del sistema è fornita tramite una console HTTP (associata alla porta TCP 6379) e un'API per la fornitura di metriche, compatibile con Prometheus. Nelle versioni future è prevista un'estensione del supporto ai comandi Redis e l'implementazione della possibilità di replicare lo storage per garantire tolleranza ai guasti e bilanciamento del carico.

Fonte: opennet.ru

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