PayPal malfermis la JunoDB DBMS-kodon

PayPal malfermis fontkodon por JunoDB, mistolerema DBMS, kiu manipulas datumojn en ŝlosilvalora formato. La sistemo estis origine desegnita kun alta sekureco, horizontala skaleblo, faŭltoleremo kaj la kapablo pritrakti centojn da miloj da samtempaj ligoj kun antaŭvideblaj prokrastoj en menso. En PayPal, preskaŭ ĉiuj servoj, de uzanta ensaluto ĝis prilaborado de financaj transakcioj, estas ligitaj al JunoDB. La projektkodo estas skribita en Go (Java klienta biblioteko) kaj distribuita sub la licenco Apache 2.0. En plua evoluo, korektoj, plibonigoj kaj ŝanĝoj de la komunumo estos akceptitaj.

La arkitekturo JunoDB baziĝas sur la uzo de ŝarĝbalancilo, kiu akceptas petojn de klientaplikoj kaj distribuas ilin inter prokuraj serviloj, kiuj samtempe aliras grupon de stokadserviloj kiam peto estas farita. Ĉiu prokurilo establas ligojn al ĉiuj stokadserviloj samtempe kaj alidirektas petojn al grupo de stokadserviloj bazitaj sur la sekcio-indekso stokita en la distribuita stokadsistemo de la etcd-agordo.

PayPal malfermis la JunoDB DBMS-kodon

Datumoj estas dividitaj kaj ligitaj al stokadnodoj uzante hashing por redukti datummovadon kiam nodoj kreskas aŭ ŝrumpas en areto. Por certigi misfunkciadon, ĉiu parto de datumoj estas reproduktita sur pluraj stokaj nodoj, kio permesas vin konservi informojn kiam individuaj serviloj malsukcesas. La kreado de geografie distribuitaj stokaĵoj estas subtenata, en kiuj grupoj de nodoj situas en malsamaj datumcentroj.

PayPal malfermis la JunoDB DBMS-kodon

Sur stokadnodojn, datumoj estas metitaj en RAM aŭ en loka stokado bazita sur la RocksDB-biblioteko. Kun konstanta stokado, datumoj estas stokitaj en ĉifrita formo (la ĉifrada ŝlosilo povas esti determinita kaj fare de la kliento kaj agordita ĉe la prokura nivelo).

PayPal malfermis la JunoDB DBMS-kodon

Por aliri la datumbazon de aplikoj, klientbiblioteko estas liverita kiu disponigas API por aplikoj en Java, Go, kaj C++. La klientparto estas simpligita kiel eble plej multe, kaj kompleksa logiko kaj agordoj, se eble, estas movitaj al la flanko de la DBMS. La interago inter la kliento kaj la ekvilibristo aŭ prokurilo estas efektivigita per ĉifrita komunika kanalo. Vi povas uzi komandlinian interfacon por administri kaj sendi petojn, kiu imitas la plenan funkciecon de la klienta API.

La sistemo estas desegnita por prilabori petojn kun antaŭvidebla malalta latencia, ekzemple, aro de tri stokaj nodoj kaj unu prokurilo, formita de n1-highmem-32-medioj (32 Intel Xeon 2.30GHz CPU-oj, 214G RAM kaj 450G SSD-bazita stokado), povis disponigi fiksan latencian ne superante 2.5% de 95% ms en procezoj en kazoj de 16% de 99 ms. mil samtempaj TLS-konektoj kaj fluo de 200 mil petoj sekundo (kun 15 samtempaj konektoj kaj fluo de 3000 mil petoj sekundo, la prokrastoj ne superis 80 ms en 6% de kazoj kaj 95 ms en 15%). Ĉe PayPal, JunoDB-bazitaj servoj servas ĉirkaŭ 99 miliardojn da petoj ĉiutage.

PayPal malfermis la JunoDB DBMS-kodon


fonto: opennet.ru

Aldoni komenton