A PayPal megnyitotta a JunoDB DBMS kódot

A PayPal megnyitotta a JunoDB forráskódját, egy hibatűrő adatbázis-kezelő rendszert, amely kulcsérték formátumban kezeli az adatokat. A rendszert eredetileg nagy biztonsággal, vízszintes skálázhatósággal, hibatűréssel és több százezer egyidejű kapcsolat kezelésére tervezték, a kiszámítható késések figyelembevételével. A PayPalban szinte minden szolgáltatás a felhasználói bejelentkezéstől a pénzügyi tranzakciók feldolgozásáig a JunoDB-hez van kötve. A projekt kódja a Go-ban (Java klienskönyvtár) íródott, és az Apache 2.0 licenc alatt kerül terjesztésre. A további fejlesztések során a közösség részéről korrekciókat, fejlesztéseket, változtatásokat elfogadunk.

A JunoDB architektúra egy terheléselosztó használatán alapul, amely elfogadja az ügyfélalkalmazásoktól érkező kéréseket, és elosztja azokat a proxykiszolgálók között, amelyek egyidejűleg hozzáférnek egy tárolókiszolgáló csoporthoz, amikor egy kérés érkezik. Mindegyik proxy egyszerre hoz létre kapcsolatot az összes tárolókiszolgálóval, és átirányítja a kéréseket a tárolókiszolgálók egy csoportjához az etcd konfiguráció elosztott tárolórendszerében tárolt partícióindex alapján.

A PayPal megnyitotta a JunoDB DBMS kódot

Az adatok particionálva vannak, és a tárolócsomópontokhoz kötve kivonatolás segítségével csökkentik az adatmozgást, ahogy a csomópontok növekednek vagy zsugorodnak a fürtben. A hibatűrés biztosítása érdekében az adatok minden egyes részét több tárolócsomóponton replikálják, ami lehetővé teszi az információk mentését, ha az egyes kiszolgálók meghibásodnak. A földrajzilag elosztott tárolók létrehozása támogatott, amelyekben a csomópontok csoportjai különböző adatközpontokban helyezkednek el.

A PayPal megnyitotta a JunoDB DBMS kódot

A tárolási csomópontokon az adatok a RAM-ba vagy a RocksDB könyvtár alapján a helyi tárolóba kerülnek. Perzisztens tárolás esetén az adatok titkosított formában tárolódnak (a titkosítási kulcsot a kliens és a proxy szinten is beállíthatja).

A PayPal megnyitotta a JunoDB DBMS kódot

Az adatbázis alkalmazásokból való eléréséhez egy klienskönyvtár található, amely API-t biztosít a Java, Go és C++ alkalmazásokhoz. A kliens rész a lehető legnagyobb mértékben leegyszerűsödik, és a bonyolult logika és beállítások, ha lehetséges, átkerülnek a DBMS oldalára. Az ügyfél és a kiegyenlítő vagy proxy közötti interakció titkosított kommunikációs csatornán keresztül történik. A kérések kezeléséhez és küldéséhez parancssori felületet használhat, amely az ügyfél API teljes funkcióját utánozza.

A rendszert úgy tervezték, hogy kiszámíthatóan alacsony késleltetésű kéréseket dolgozzon fel, például három tárolócsomópontból és egy proxyból álló fürtöt, amely n1-highmem-32 környezetekből áll (32 Intel Xeon 2.30 GHz-es CPU, 214 G RAM és 450 G SSD alapú tárhely) 2.5 ezer egyidejű TLS kapcsolat és másodpercenként 95 ezer kérés feldolgozásakor (16 egyidejű kapcsolattal és 99 ezer kérés folyamával) az esetek 200%-ában 15 ms-ot meg nem haladó, 3000%-ban 80 ms-os fix késleltetést tudott biztosítani másodpercenként a késések az esetek 6%-ában nem haladták meg a 95 ms-ot, és 15%-ban a 99 ms-ot. A PayPalnál a JunoDB-alapú szolgáltatások körülbelül 350 milliárd kérést szolgálnak ki naponta.

A PayPal megnyitotta a JunoDB DBMS kódot


Forrás: opennet.ru

Hozzászólás