Stocare Microsoft open source Garnet compatibilă cu Redis

Microsoft a deschis sistemul NoSQL Garnet, conceput pentru a crea magazine de cache și compatibil cu bibliotecile client existente pentru stocarea Redis. Garnet acceptă crearea de clustere scalabile de stocare în cache a datelor care pot utiliza replicarea, migrarea cheilor și împărțirea datelor între nodurile clusterului. Proiectul este scris în C# cu un nucleu de stocare în C++, este deschis sub licența MIT și poate rula pe toate platformele suportate de .NET (platformele principale sunt Linux și Windows).

Pentru stocarea datelor, se folosește motorul Tsavorite (un furk al stocării Microsoft FASTER), care acceptă procesarea interogărilor multi-threaded, tranzacții, remedierea modificărilor într-un mod neblocant (checkpointing), recuperarea după erori, salvarea copiilor redundante și menținerea unui jurnalul de operațiuni. Motorul de rețea din Garnet este construit folosind arhitectura de memorie partajată propusă de proiectul de cercetare ShadowFax. Procesarea TLS și interacțiunea cu stocarea sunt efectuate într-un singur fir, ceea ce face posibilă evitarea supraîncărcării de comutare a firelor de execuție și utilizarea mai eficientă a memoriei cache a CPU atunci când se transferă date prin rețea.

Arhitectura Garnet separă logica pentru analizarea și procesarea cererilor de operațiunile de stocare. Datele sunt stocate folosind două depozite cheie-valoare bazate pe biblioteca Tsavorite. Primul magazin „principal” este optimizat pentru operațiuni rapide cu șiruri, iar al doilea magazin „obiect” este optimizat pentru a găzdui obiecte complexe și tipuri de date avansate, cum ar fi hash-uri și liste. Tipurile de date din a doua stocare sunt implementate folosind biblioteci .NET. Datele sunt stocate pe heap (heap C#), ceea ce le permite să fie actualizate eficient și în formă serializată pe disc.

Stocare Microsoft open source Garnet compatibilă cu Redis

Caracteristicile granatelor:

  • Este posibilă implementarea stocării pe mai multe niveluri, care acoperă RAM, unități SSD și stocare în cloud, în care datele mai puțin solicitate sunt împinse în stocarea lentă pentru a crea cache-uri mai mari decât RAM.
  • Suport extensibil pentru dispozitive, permițând crearea de straturi optimizate pentru a funcționa cu diferite dispozitive, de exemplu, există straturi pentru SDD, hard disk-uri și stocare în cloud Azure Storage.
  • Un mecanism eficient pentru reutilizarea spațiului eliberat din RAM, prevenind fragmentarea.
  • Limite configurabile ale dimensiunii memoriei utilizate pentru indexuri, jurnalele și stocarea obiectelor.
  • Protocolul RESP este utilizat pentru a accesa spațiul de stocare, ceea ce permite ca Garnet să fie utilizat cu clienți Redis nemodificați.
  • Acceptă stocarea atât a valorilor șirurilor, cât și a structurilor complexe de date, cum ar fi liste, hashuri, seturi, liste sortate și date de localizare geografică. Abilitatea de a determina durata de viață a cheii.
  • Disponibilitatea API-urilor pentru efectuarea de interogări analitice (HLL/Hyperloglog, Bitmap), tranzacții (MULTI/EXEC) și utilizarea paradigmei de publicare/abonare.
  • Disponibilitatea mijloacelor pentru controlul flexibil al accesului prin ACL.
  • Abilitatea de a defini configurația în format JSON sau redis.conf.
  • Suport pentru conectarea unor handlere de rețea suplimentare. Abilitatea de a cripta traficul folosind TLS (bazat pe SslStream).
  • Abilitatea de a crea extensii în C# care implementează operațiuni suplimentare cu șiruri și obiecte.
  • Suport pentru procedurile stocate tranzacționale care se întind pe mai multe chei.
  • Abilitatea de a restabili starea dintr-o poziție salvată anterior (punc de control-recuperare). Prezența unui mod de fișier numai pentru atașare (AOF, fișier numai pentru atașare), în care toate datele vechi rămân disponibile și nu sunt înlocuite.
  • Suport pentru crearea unui cluster de stocare cu replicare, sharding, migrare dinamică a cheilor între noduri și recuperarea nodurilor eșuate.
  • Performanță ridicată și latență scăzută la executarea interogărilor. Procesați eficient cererile de loturi mici pe un număr mare de sesiuni de client, permițându-vă să obțineți un debit (număr de cereri procesate pe secundă) cu un ordin de mărime mai mare decât soluțiile concurente. Când rulați în mașini virtuale din cloudul Azure, în majoritatea cazurilor, latența clientului nu depășește 300 de microsecunde. În testele noastre, Garnet este semnificativ înaintea Redis, Dragonfly și KeyDB în ceea ce privește performanța și capacitatea de răspuns. În unele teste, Garnet depășește sistemele concurente de până la zece ori.
    Stocare Microsoft open source Garnet compatibilă cu Redis
    Stocare Microsoft open source Garnet compatibilă cu Redis
    Stocare Microsoft open source Garnet compatibilă cu Redis
    Stocare Microsoft open source Garnet compatibilă cu Redis

Sursa: opennet.ru

Adauga un comentariu