Яндекс опубликовал Odyssey, многопоточный балансировщик соединений для PostgreSQL
Как сообщает opennet.ru компания Яндекс опубликовала исходные тексты специализированного прокси-сервера Odyssey, предназначенного для поддержания пула открытых соединений к СУБД PostgreSQL и организации маршрутизации запросов. Приложение построено с использованием многопоточной архитектуры, базирующейся на движке сопрограмм machinarium, позволяющем создавать приложения для обработки событий в асинхронном режиме с использованием традиционных методов процедурного программирования без применения callback-вызовов. Код написан на языке Си и распространяется под лицензией BSD.
Основные возможности Odyssey:
- Для обработки соединений запускается несколько рабочих процессов с многопоточными обработчиками, отвечающими за аутентификацию и проксирование запросов. Все рабочие потоки совместно используют общий пул соединений;
- Отслеживается состояния транзакций и выполняется их автоматическая отмена (Rollback) в случае преждевременного отсоединения клиента;
- Запоминается последний сервер, к которому был подключен клиент, для возобновления подключения к тому же серверу в случае повторного соединения;
- Возможность определения пулов соединений с учетом привязки к пользователю и БД. Каждый пул может иметь раздельную аутентификацию, режим работы и ограничения;
- Полная поддержка SSL/TLS и типовых методов аутентификации клиента и сервера. Возможность выборочной блокировки пользователей для разных пулов;
- Ведение лога с идентификацией соединений клиента и сервера через UUID, который позволяет связать различные события в логе и сообщения об ошибках с определенным клиентом.