1

私は、テナント/クライアントごとに圧縮されたパッケージを備えたマルチテナント アプリを持っています。これには、それぞれのパブリック サイトのテンプレートとハンドラーが含まれています。現在、50 未満のテナントがあり、その特定のクライアント ドメインへの最初の要求の後、インポートされたアプリをメモリに保持することは問題ありません。

このアプローチはうまく機能しますが、変更を加えたり、新しいクライアントを追加したりするたびに、新しいクライアントの圧縮パッケージを使用してアプリを再デプロイする必要があります。

現在、これらのパッケージを Web アップロードでアップロードし、ブロブストアに保存できるように取り組んでいます。

私の懸念は次のとおりです。

  • もちろん、ブロブストアからパッケージを取得するのは、圧縮されたパッケージをファイル システムにインポートするよりも時間がかかります。しかし、これは最大の問題ではありません。

  • ファイルシステムになく、パスがないモジュールをロード/インポートするにはどうすればよいですか?

  • すべてのクライアント パッケージが約 1 MB の場合、クライアント ベースが少ない限り問題にはなりませんが、1k またはそれ以上になるとどうなりますか? 明らかに、数GBのデータをメモリに保存するのに十分なメモリがありません。これに対処する最善の方法は何ですか?

  • インスタンス メモリを使用して以前のテナント パッケージをメモリに格納する場合、新しくアップロードされたパッケージがある場合、メモリ内のデータはどのように無効になりますか?

この種の状況に対処する方法についていくつか考えていただければ幸いです。

4

1 に答える 1

1

私はニックに同意します。テナント固有の zip に Python コードが含まれていてはなりません。メモリの問題を解決するには、ほとんどのページをデータストアにキャッシュします。それらを提供するために、すべてのテナントをインスタンスにロードする必要はありません。要求時ではなく、保存時に HTML ビューを事前に生成することもできます。

于 2012-10-29T16:46:15.010 に答える