PayPal-ը բացեց JunoDB DBMS կոդը

PayPal-ը բացել է սխալ հանդուրժող DBMS JunoDB-ի սկզբնաղբյուրը, որը մանիպուլյացիա է անում տվյալների բանալին-արժեքի ձևաչափով: Համակարգն ի սկզբանե նախագծված էր բարձր անվտանգության, հորիզոնական մասշտաբայնության, սխալների հանդուրժողականության և հարյուր հազարավոր միաժամանակյա կապեր վարելու ունակությամբ՝ հաշվի առնելով կանխատեսելի ուշացումները: PayPal-ում գրեթե բոլոր ծառայությունները՝ սկսած օգտատերերի մուտքից մինչև ֆինանսական գործարքների մշակումը, կապված են JunoDB-ի հետ: Ծրագրի կոդը գրված է Go-ում (Java հաճախորդների գրադարան) և տարածվում է Apache 2.0 լիցենզիայի ներքո: Հետագա զարգացումը կընդունի ուղղումներ, բարելավումներ և փոփոխություններ համայնքից:

JunoDB-ի ճարտարապետությունը հիմնված է բեռի հավասարակշռիչի օգտագործման վրա, որն ընդունում է հաճախորդի հավելվածների հարցումները և դրանք բաշխում վստահված սերվերների միջև, որոնք միաժամանակ մուտք են գործում պահեստավորման սերվերների խումբ, երբ հարցումը կատարվում է: Յուրաքանչյուր պրոքսի սերվեր միանգամից կապեր է հաստատում բոլոր պահեստավորման սերվերների հետ և հարցումներ է ուղարկում պահեստավորման սերվերների խմբին՝ հիմնված բաժանման ինդեքսի վրա, որը պահվում է բաշխված պահեստավորման համակարգի etcd կազմաձևում:

PayPal-ը բացեց JunoDB DBMS կոդը

Տվյալները բաժանվում և կապված են պահեստավորման հանգույցների հետ՝ օգտագործելով հեշինգ, ինչը նվազեցնում է տվյալների շարժումը, քանի որ կլաստերի հանգույցները մեծանում կամ փոքրանում են: Սխալների հանդուրժողականությունն ապահովելու համար տվյալների յուրաքանչյուր հատվածը կրկնօրինակվում է մի քանի պահեստային հանգույցների վրա, ինչը թույլ է տալիս պահպանել տեղեկատվությունը, երբ առանձին սերվերները ձախողվում են: Աջակցվում է աշխարհագրորեն բաշխված պահեստների ստեղծումը, որոնցում հանգույցների խմբերը տեղակայված են տվյալների տարբեր կենտրոններում։

PayPal-ը բացեց JunoDB DBMS կոդը

Տվյալների պահպանման հանգույցներում դրանք գտնվում են RAM-ում կամ տեղական պահեստում՝ RocksDB գրադարանի հիման վրա: Երբ մշտապես պահվում է, տվյալները պահվում են կոդավորված ձևով (գաղտնագրման բանալին կարող է որոշվել կամ հաճախորդի կողմից կամ սահմանվել վստահված անձի մակարդակով):

PayPal-ը բացեց JunoDB DBMS կոդը

Հավելվածներից տվյալների բազա մուտք գործելու համար տրամադրվում է հաճախորդի գրադարան, որն ապահովում է API Java, Go և C++ հավելվածների համար: Հաճախորդի մասը հնարավորինս պարզեցված է, և բարդ տրամաբանությունն ու կարգավորումները հնարավորության դեպքում փոխանցվում են DBMS կողմին: Հաճախորդի և հավասարակշռողի կամ վստահված անձի միջև փոխազդեցությունն իրականացվում է կոդավորված կապի ալիքի միջոցով: Հարցումները կառավարելու և ուղարկելու համար կարող եք օգտագործել հրամանի տողի միջերեսը, որը կրկնում է հաճախորդի API-ի բոլոր հնարավորությունները:

Համակարգը նախագծված է կանխատեսելի ցածր ուշացումներով հարցումները մշակելու համար, օրինակ՝ երեք պահեստային հանգույցներից և մեկ պրոքսիից կազմված կլաստեր, որը ձևավորվել է n1-highmem-32 միջավայրից (32 Intel Xeon 2.30 ԳՀց պրոցեսոր, 214G RAM և 450G SSD-ի վրա հիմնված հիշողություն) , կարողացել է ապահովել ֆիքսված ձգձգումներ, որոնք չեն գերազանցում 2.5 ms-ը 95% դեպքերում և 16 ms-ը՝ 99%-ում՝ մշակելիս 200 հազար միաժամանակյա TLS միացումներ և վայրկյանում 15 հազար հարցումների հոսք (3000 միաժամանակյա միացումներով և 80 հազար հարցումների հոսքով։ վայրկյանում ուշացումները չեն գերազանցել 6 ms-ը 95% դեպքերում, իսկ 15 ​​ms-ը 99%-ում: PayPal-ում JunoDB-ի վրա հիմնված ծառայությունները սպասարկում են օրական մոտ 350 միլիարդ հարցում:

PayPal-ը բացեց JunoDB DBMS կոդը


Source: opennet.ru

Добавить комментарий