Odyssey は、追加のワーカー スレッドの数を指定することで、処理パフォーマンスを大幅に拡張できます。各ワーカー スレッドは、認証と、クライアントからサーバーおよびサーバーからクライアントへのリクエストのプロキシ処理を担当します。すべてのワーカー スレッドは、グローバル サーバー接続プールを共有します。マルチスレッド設計は、 SSL/TLS
パフォーマンスにおいて重要な役割を果たします。
Odyssey は現在のトランザクション状態を追跡し、予期しないクライアントの切断が発生した場合には、再利用のためにサーバー接続をサーバー プールに戻す前に、自動的に接続をCancel
、放棄されたトランザクションのRollback
を実行できます。さらに、最後のサーバー接続所有者クライアントが記憶されるため、クライアントとサーバーの割り当てごとにクライアント オプションを設定する必要性が減ります。
Odyssey では、接続プールをDatabase
とUser
のペアとして定義できます。定義された各プールには、個別の認証、プーリング モード、制限設定を含めることができます。
Odyssey は、フル機能のSSL/TLS
サポートと、クライアントとサーバーの両方の認証にmd5
とclear text
などの一般的な認証方法を備えています。 Odyssey は PAM および LDAP 認証をサポートしています。この方法は、ユーザー名とパスワードのペアを検証するために PAM/LDAP を使用することを除いて、 clear text
認証と同様に動作します。 PAM はオプションで、接続されたリモートのホスト名または IP アドレスをチェックします。さらに、各プール ユーザーを個別にブロックすることもできます。
Odyssey は、クライアントとサーバーの接続用に普遍的に一意の識別子uuid
生成します。ログ イベントとクライアント エラー応答には ID が含まれており、これを使用してクライアントを一意に識別し、アクションを追跡できます。 Odyssey は、システム ロガーを使用してログ イベントをログ ファイルに保存できます。
Odyssey は複数のコマンド ライン オプションをサポートしています。詳細を表示するには/path/to/odyssey
--help を使用してください
Odyssey は、カスタムメイドのコルーチン エンジン (machinarium) によって駆動される、洗練された非同期マルチスレッド アーキテクチャを備えています。コルーチン設計の背後にある主なアイデアは、イベント駆動型の非同期アプリケーションを、従来のコールバック アプローチを使用するのではなく、同期手続き型の方法で記述されているかのように見えるようにすることです。
主な目標の 1 つは、コード ベースを新しい開発者にとって理解しやすいものにし、将来の開発のためにアーキテクチャを簡単に拡張できるようにすることでした。
詳細情報: アーキテクチャと内部構造。
現在、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 をセットアップします (マニュアル)。