Microsoft a deschis codul depozitului Garnet, compatibil cu Redis

Compania Microsoft a deschis codurile sursă ale sistemului NoSQL Garnet, destinat creării de stocări cache și compatibil cu librăriile client existente pentru stocarea Redis. Garnet suportă crearea de clustere scalabile pentru cache-ul de date, în care pot fi utilizate replicarea, migrarea cheilor și segmentarea datelor între nodurile clusterului. Proiectul este scris în C# cu un nucleu de stocare în C++, este deschis sub licența MIT și poate funcționa pe toate platformele acceptate în .NET (platformele primare declarate sunt Linux și Windows).

Pentru stocarea datelor se utilizează motorul Tsavorite (fork al stocării Microsoft FASTER), care suportă procesarea multiplă a cererilor, tranzacții, fixarea modificărilor în mod non-blocant (checkpointing), recuperarea în caz de eșec, menținerea copiilor redundante și înregistrarea operațiunilor. Procesorul 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 se desfășoară într-un singur fir de execuție, ceea ce permite evitarea costurilor suplimentare pentru comutarea firelor și utilizarea mai eficientă a cache-ului CPU în timpul transferului de date prin rețea.

Arhitectura Garnet separă logica de analiză și procesare a cererilor de operațiile cu stocarea. Datele sunt stocate folosind două stocări în format cheie-valoare, implementate pe baza bibliotecii Tsavorite. Prima stocare "principală" este optimizată pentru executarea rapidă a operațiunilor cu șiruri, în timp ce a doua stocare "obiectuală" este optimizată pentru plasarea obiectelor complexe și a tipurilor de date extinse, cum ar fi hash-urile și listele. Tipurile de date din a doua stocare sunt implementate cu ajutorul bibliotecilor .NET. Datele sunt stocate în heap (C# heap), ceea ce permite actualizări eficiente, precum și în formă serializată pe disc.

Microsoft a deschis codul depozitului Garnet, compatibil cu Redis

Caracteristicile Garnet:

  • Este posibilă desfășurarea de stocări multi-nivel, acoperind memorie RAM, SSD-uri și stocări în cloud, în care datele mai puțin solicitate sunt trimise în stocări mai lente pentru a crea cache-uri mai mari decât memoria RAM.
  • Suport extins pentru dispozitive, permițând crearea de straturi optimizate pentru diferite dispozitive, cum ar fi straturi pentru SSD, hard disk-uri și stocare în cloud Azure Storage.
  • Un mecanism eficient de reutilizare a spațiului eliberat în memoria operativă, prevenind fragmentarea.
  • Limite configurabile pentru dimensiunea memoriei utilizate pentru indecși, jurnal și stocarea obiectelor.
  • Pentru accesarea stocării se folosește protocolul RESP, permițând utilizarea Garnet cu clienți Redis nemodificați.
  • Suport pentru stocarea atât a valorilor de tip string, cât și a structurilor de date complexe, cum ar fi liste, hash-uri, seturi, liste ordonate și date de geolocalizare. Capacitatea de a defini timpul de viață al cheii.
  • Disponibilitatea unei API pentru executarea interogărilor analitice (HLL/Hyperloglog, Bitmap), tranzacții (MULTI/EXEC) și utilizarea paradigmei publicare/subscriere.
  • Disponibilitatea unor instrumente pentru gestionarea flexibilă a accesului prin ACL.
  • Posibilitatea de a defini configurația în format JSON sau redis.conf.
  • Suport pentru conectarea unor manipulatoare de rețea suplimentare. Posibilitatea de criptare a traficului folosind TLS (pe baza SslStream).
  • Posibilitatea de a crea extensii în limbajul C#, implementând operații adiționale cu string-uri și obiecte.
  • Suport pentru proceduri stocate tranzacționale care acoperă mai multe chei.
  • Posibilitatea de a restabili starea de la o poziție salvată anterior (checkpoint-recovery). Disponibilitatea unui mod de adăugare unică (AOF, append-only file), în care toate datele vechi rămân accesibile și nu sunt suprascrise.
  • Suport pentru crearea unui cluster de stocare cu replicare, segmentare (Sharding), migrarea dinamică a cheilor între noduri și recuperarea nodurilor defecte.
  • Performanță ridicată și latențe scăzute în execuția interogărilor. Procesare eficientă a cererilor mici în cadrul unui număr mare de sesiuni client, permițând o capacitate de procesare (numărul de cereri procesate pe secundă) cu un ordin de mărime mai mare decât soluțiile concurente. virtuálne mašini În cloudul Azure, în cele mai multe cazuri, întârzierile accesării clientului nu depășesc 300 de microsecunde. În testele efectuate, Garnet depășește semnificativ Redis, Dragonfly și KeyDB în termeni de performanță și reactivitate. În unele teste, Garnet depășește sistemele concurente de zece ori.
    Microsoft a deschis codul depozitului Garnet, compatibil cu Redis
    Microsoft a deschis codul depozitului Garnet, compatibil cu Redis
    Microsoft a deschis codul depozitului Garnet, compatibil cu Redis
    Microsoft a deschis codul depozitului Garnet, compatibil cu Redis

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster