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

Додати коментар або відгук