PayPal Open Sources Hera


PayPal сделал HERA, свой высокоэффективный надежный доступ к хранилищам данных, с открытым исходным кодом. Hera — это шлюз доступа к данным, который PayPal использует для масштабирования доступа к базе данных для сотен миллиардов запросов SQL в день.

Hera состоит из клиентской библиотеки Hera, зависящей от языка, которая находится на каждом хосте приложения и позволяет приложениям эффективно взаимодействовать с Hera, наряду с централизованной прокси-службой Hera, которая полностью осведомлена о конфигурациях базы данных и требованиях приложений.

Эта служба получает запросы приложений и направляет их в выбранный экземпляр базы данных. Модули Router, Parser и Query Rewriting являются частью прокси-сервера Hera. Набор рабочих, отвечающих за поддержание соединений с конкретной базой данных, затем обрабатывает связь между прокси и этой базой данных. Первоначально Hera была написана на C ++, но недавно была переписана на GoLang.

PayPal разработал Hera для масштабирования тысяч своих приложений с помощью мультиплексирования соединений, разделения чтения и записи и сегментирования. Продукт был разработан для решения проблемы, обнаруженной PayPal при переходе к использованию микросервисной архитектуры на уровне приложений. Это имело побочный эффект в виде создания множества серверов приложений и связанного с этим увеличения объединенных соединений БД с большим количеством постоянных соединений, входящих в БД.

Чтобы преодолеть потребность в постоянных соединениях, PayPal построил мультиплексор соединений, который мог мультиплексировать множество входящих соединений с базой данных, большинство из которых были простаивающими, от уровня приложения до небольшого набора активных соединений с базой данных на уровне БД. Это было улучшено с помощью синтаксического анализа SQL, чтобы можно было различать транзакционные и нетранзакционные запросы.

Hera также поддерживает разделение чтения и записи, чтобы скачки числа операций чтения не влияли на производительность записи и наоборот. Он также преобразует запросы из приложений в SQL, что обеспечивает совместимость запроса с сегментированием. Hera использует сегментирование для управления перераспределением данных. Логика сегментирования хранится на сервере, чтобы отдельным приложениям не приходилось управлять сегментированием на стороне клиента.

У Hera также есть резервная очередь, которая обрабатывает большие объемы запросов на обслуживание. В периоды высокого спроса запросы могут быть помещены в очередь и обработаны, как только будет выполнен другой запрос на обслуживание. Его также можно настроить для удаления медленного запроса, чтобы разрешить выполнение нескольких более типичных запросов.

Шардинг Hera основан на кластерах Oracle RAC. Несколько кластеров RAC используются для имитации единой логической базы данных, при этом логические сегменты распределены по RAC, а маршрутизация сегментов обрабатывается Hera. Hera использует имя и значение привязки столбца ключа сегмента, чтобы определить, как направлять запросы к соответствующему сегменту. Компонент синтаксического анализа используется для обнаружения и извлечения ключа сегментов из предложений SQL Where, а компонент маршрутизации направляет запросы в базу данных на основе shard_id, извлеченного компонентом синтаксического анализа.

Гера доступна на GitHub.


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