PayPal го отвори изворниот код на DBMS JunoDB толерантен за грешки, кој манипулира со податоци во формат со клучна вредност. Системот првично беше дизајниран со висока безбедност, хоризонтална приспособливост, толеранција на грешки и способност да се справи со стотици илјади истовремени врски со предвидливи латенции на ум. Во PayPal, речиси сите услуги, од најавување на корисници до обработка на финансиски трансакции, се врзани за JunoDB. Проектниот код е напишан во Go (библиотека на клиенти на Java) и се дистрибуира под лиценцата Apache 2.0. Понатамошниот развој ќе прифати корекции, подобрувања и промени од заедницата.
Архитектурата на JunoDB се базира на употреба на балансер на оптоварување кој прифаќа барања од клиентски апликации и ги дистрибуира меѓу прокси сервери кои истовремено пристапуваат до група од сервери складирање при извршување на барање. Секој прокси-сервер воспоставува врски со сите нив одеднаш. сервери складирање и насочува барања до група сервери за складирање врз основа на индекс за партиционирање складиран во системот за складирање со дистрибуирана конфигурација etcd.

Податоците се поделени и поврзани со јазли за складирање користејќи хеширање, што го намалува движењето на податоците додека јазлите во кластерот растат или се намалуваат. За да се обезбеди толеранција на грешки, секој податок се реплицира на неколку јазли за складирање, што ви овозможува да зачувате информации кога поединечни сервери не успеваат. Поддржано е создавањето на географски дистрибуирани складишта, во кои групи на јазли се наоѓаат во различни центри за податоци.

На јазлите за складирање податоци, тие се наоѓаат во RAM меморија или во локално складирање базирано на библиотеката RocksDB. Кога трајно се складираат, податоците се складираат во шифрирана форма (клучот за шифрирање може да се одреди или од клиентот или да се постави на ниво на прокси).

За да пристапите до базата на податоци од апликациите, се обезбедува клиентска библиотека која обезбедува API за апликации во Java, Go и C++. Клиентскиот дел е колку што е можно поедноставен, а сложената логика и поставките се пренесуваат на страната на DBMS секогаш кога е можно. Интеракцијата помеѓу клиентот и балансерот или прокси се врши преку шифриран канал за комуникација. За да управувате и да испраќате барања, можете да го користите интерфејсот на командната линија, кој ги реплицира сите можности на API на клиентот.
Системот е дизајниран да обработува барања со предвидливи ниски доцнења, на пример, кластер од три јазли за складирање и еден прокси, формиран од средини n1-highmem-32 (32 процесори Intel Xeon 2.30 GHz, 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 милијарди барања дневно.

Извор: opennet.ru
