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 RAM и 450G SSD пространство), успя да осигури фиксирани забавяния, които не надвишават 2.5 мс в 95% от случаите и 16 мс в 99% при обработка на 200 хиляди едновременни TLS-соединения и поток от 15 хиляди заявки в секунда (при 3000 едновременни съединения и поток от 80 хиляди заявки в секунда забавянията не надвишават 6 мс в 95% от случаите и 15 мс в 99%). В PayPal услугите на базата JunoDB обслужват около 350 милиарда заявки на ден.

PayPal откри кода на СУБД JunoDB


Източник: opennet.ru
Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster