2017-08-23 4 views
0

サブドメインのURLに従って動的なmongo DBを自分のシングルコードに接続したいとします。node.jsで実行時に単一のコード/プロジェクトで複数の動的DBを使用する方法

例えば、 www.efg.example.com次いでDBであるMongoの場合www.abc.example.com次いでDBはABC

  • あるMongoの場合

    1. はwww.xyz.example.comならば、DBはXYZ
    2. あるモンゴefg

    誰かがwww.xyz.example.comのURLを突き、次にxyzのDBが自動的に接続した場合。誰かがwww.abc.example.com urlを押すと、abc DBが自動的に接続します。

    ただし、xyz DB接続を切断しないでください。それは残るべきです。単一のコード/プロジェクトがあるからです。

    解答してください。

  • 答えて

    0

    アプリケーションの使用例がわからないので、最良の解決策を保証することはできません。

    実行可能な解決策の1つは、3つの異なるportsに3 node.jsスレッドを実行し、それぞれが特定のDBインスタンスに接続することです。さまざまな環境変数で3つの異なるnode.jsプロセスを実行することで実行できます。次に、各ドメインへの要求を別のポートに転送します。

    このアプローチにはいくつかの利点があります:コンフィギュレーションの

    • 使いやすさを、単にソースコードにハッキングif/elseせずに展開の設定を気にする必要があります。
    • システムの可用性、3つのデータベースのうちの1つがダウンしている場合、影響を受けるドメインは1つだけです。

    注:このアプローチは、少数のサブドメインでうまく機能します。 30のサブドメインまたはダイナミックドメインがある場合は、展開アーキテクチャを再検討してください:)。それに対処するには、より高度な技術を使用する必要があるかもしれません。アプリケーションランタイム中にアプリケーション内にmongooseインスタンスのリストを維持することが最善の方法ですが、各インスタンスは1つのサブドメインを担当します。次にreq.get('host')を使用してサブドメインをチェックし、対応するmongooseインスタンスを使用してDB操作を処理します。

    +0

    ご回答いただきありがとうございます。はい、50を超えるサブドメイン、さらにはダイナミックドメインもあります。ですから、私たちのために役立ついくつかの先進技術やその他の適切な解決策を提案してください。 –

    +0

    これは、アプリケーションコードではなく、デプロイメントアーキテクチャ(複雑なユースケースではコンテナデプロイメントのアプローチが必要な場合があります)に関するものです。私は迅速な解決策で自分の答えを更新しました。それが助けてくれることを願っています。 – haotang

    関連する問題