PayPal адкрыў код СКБД JunoDB

Кампанія PayPal адкрыла зыходныя тэксты абароненай ад збояў СКБД JunoDB, якая маніпулюе дадзенымі ў фармаце ключ-значэнне. Сістэма першапачаткова спраектавана з аглядкай на высокую бяспеку, гарызантальную маштабаванасць, адмоваўстойлівасць і здольнасць апрацоўваць сотні тысяч адначасовых злучэнняў з прадказальнымі затрымкамі. У PayPal практычна ўсе сэрвісы, ад уваходу карыстальнікаў да апрацоўкі фінансавых транзакцый, завязаны на JunoDB. Код праекту напісаны на мове Go (кліенцкая бібліятэка на Java) і распаўсюджваецца пад ліцэнзіяй Apache 2.0. Пры далейшай распрацоўцы будуць прымацца выпраўленні, паляпшэнні і змены ад супольнасці.

Архітэктура JunoDB заснавана на выкарыстанні балансавальніка нагрузкі, які прымае запыты ад кліенцкіх прыкладанняў і што размяркоўвае іх паміж проксі-серверамі, адначасова якія звяртаюцца да групы сервераў захоўвання пры выкананні запыту. Кожны проксі-сервер усталёўвае злучэнні адразу са ўсімі серверамі захоўвання і перанакіроўвае запыты да групы сервераў захоўвання на аснове азначніка секцыянавання, які захоўваецца ў размеркаванай сістэме захоўвання канфігурацыі etcd.

PayPal адкрыў код СКБД JunoDB

Дадзеныя секцыянуюцца і прывязваюцца да вузлоў захоўвання з выкарыстаннем хэшавання, што дазваляе паменшыць перасоўванне дадзеных пры павелічэнні ці памяншэнні вузлоў у кластары. Для забеспячэння адмоваўстойлівасці кожная порцыя дадзеных рэплікуецца на некалькіх вузлах захоўвання, што дазваляе захаваць інфармацыю пры выхадзе са строю асобных сервераў. Падтрымліваецца стварэнне тэрытарыяльна размеркаваных сховішчаў, у якіх групы вузлоў размешчаны ў розных датацэнтрах.

PayPal адкрыў код СКБД JunoDB

На вузлах захоўвання дадзеных размяшчаюцца ў аператыўнай памяці ці ў лакальным сховішчы на ​​базе бібліятэкі RocksDB. Пры сталым захоўванні дадзеныя размяшчаюцца ў зашыфраваным выглядзе (ключ шыфравання можа вызначаць як кліентам, так і задавацца на ўзроўні проксі).

PayPal адкрыў код СКБД JunoDB

Для звароту да БД з прыкладанняў пастаўляецца кліенцкая бібліятэка, якая прадстаўляе API для прыкладанняў на мовах Java, Go і C++. Кліенцкая частка максімальна спрошчана, а складаная логіка і настройкі па магчымасці вынесены на бок СКБД. Узаемадзеянне паміж кліентам і балансавальніка або проксі ажыццяўляецца праз шыфраваны канал сувязі. Для кіравання і адпраўкі запытаў можна выкарыстоўваць інтэрфейс каманднага радка, які прайгравае ўсе магчымасці кліенцкага API.

Сістэма спраектавана для апрацоўкі запытаў з прадказальнымі нізкімі затрымкамі, напрыклад, кластар з трох вузлоў захоўвання і аднаго проксі, сфармаваны з акружэнняў n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G АЗП і 450G сховішча на базе SSD), змог затрымкі не якія перавышаюць 2.5 мс у 95% выпадкаў і 16 мс у 99% пры апрацоўцы 200 тысяч адначасовых TLS-злучэнняў і струмені ў 15 тысяч запытаў у секунду (пры 3000 адначасовых злучэнняў і струмені ў 80 тысяч запытаў у секунду затрымкі не перавысілі 6% выпадкаў і 95 мс у 15%). У PayPal сервірсы на базе JunoDB абслугоўваюць каля 99 мільярдаў запытаў у дзень.

PayPal адкрыў код СКБД JunoDB


Крыніца: opennet.ru

Дадаць каментар