Odyssey может значительно повысить производительность обработки, указав ряд дополнительных рабочих потоков. Каждый рабочий поток отвечает за аутентификацию и проксирование запросов клиент-сервер и сервер-клиент. Все рабочие потоки совместно используют глобальные пулы подключений к серверу. Многопоточный дизайн играет важную роль в производительности SSL/TLS
.
Odyssey отслеживает текущее состояние транзакции и в случае неожиданного отключения клиента может автоматически Cancel
соединение и выполнить Rollback
прерванной транзакции, прежде чем вернуть соединение с сервером в пул серверов для повторного использования. Кроме того, запоминается последний клиент-владелец подключения к серверу, чтобы уменьшить необходимость настройки параметров клиента при каждом назначении клиента на сервер.
Odyssey позволяет определять пулы соединений как пару Database
и User
. Каждый определенный пул может иметь отдельные настройки аутентификации, режима объединения и ограничений.
Odyssey имеет полнофункциональную поддержку SSL/TLS
и распространенные методы аутентификации, такие как: md5
и clear text
как для аутентификации клиента, так и для сервера. Odyssey поддерживает аутентификацию PAM и LDAP. Этот метод работает аналогично аутентификации clear text
за исключением того, что он использует PAM/LDAP для проверки пар имя пользователя/пароль. PAM дополнительно проверяет имя или IP-адрес подключенного удаленного хоста. Кроме того, это позволяет блокировать каждого пользователя пула отдельно.
Odyssey генерирует универсально уникальные идентификаторы uuid
для клиентских и серверных соединений. Любые события журнала и ответы об ошибках клиента включают идентификатор, который затем можно использовать для уникальной идентификации клиента и отслеживания действий. Odyssey может сохранять события журнала в файл журнала и использовать системный журнал.
Odyssey поддерживает несколько параметров командной строки. Используйте /path/to/odyssey
--help, чтобы увидеть больше
Odyssey имеет сложную асинхронную многопоточную архитектуру, которая управляется специально созданным движком сопрограммы: machinarium. Основная идея дизайна сопрограмм заключается в том, чтобы асинхронные приложения, управляемые событиями, выглядели и чувствовали себя так, как будто они написаны синхронно-процедурно, вместо использования традиционного подхода обратного вызова.
Одной из основных целей было сделать базу кода понятной для новых разработчиков и сделать архитектуру легко расширяемой для будущей разработки.
Дополнительная информация: Архитектура и внутреннее устройство.
В настоящее время Odyssey работает только на Linux. Поддерживаемые платформы: x86/x86_64.
Для сборки вам понадобится:
git clone git://github.com/yandex/odyssey.git
cd odyssey
make local_build
Затем адаптируйте odyssey-dev.conf:
make local_run
Альтернативно:
make console_run
make start-dev-env
Настройте CLion для сборки проекта в контейнере вручную.