2016-09-08 22 views
1

関数の複数のインスタンスがアクセスして使用できるオブジェクトを格納する必要がある場合、これを達成するための最良の方法を教えてください。複数のAzure関数インスタンス間でオブジェクトを共有する

+0

オブジェクトの意味を定義してください。複数のインスタンスが同時に更新したり、読み取り専用のデータであるか、書き込み/編集しているかなど、並行してスレッドセーフでアクセスする必要がありますか? –

+0

大規模なサーバーレスアプリケーションの作成について考えると興味深い質問です。 – Thomas

答えて

3

ほとんどすべての関数の実行は同じプロセスで実行されているので、は、関数インスタンス間で状態を共有するために静的クラスメンバを使用できます。しかし、これは信頼できません。プロセスがいつでも停止したり、機能が複数のVMにまたがる複数のプロセスにスケールアウトされたりする可能性があります。一部の機能では静的なデータのコピーが表示され、別の機能では別のコピーが表示されます。そのため、静的変数は実際にはベストエフォート型の一時的なキャッシュとしてのみ役立ちます。

関数インスタンス間でオブジェクトを確実に共有したい場合は、オブジェクトをRedisのような外部データストアにシリアル化するか、オブジェクトをローカルファイルシステムにシリアル化する必要があります。あなたの機能の

+0

興味深いアプローチ! – Thomas

+0

自動拡張がアプリケーションの新しいインスタンスを追加した場合でも、ファイルシステムは常にすべてのインスタンスで使用可能ですか? –

+0

はい、すべてのインスタンスが同じ基本ファイルシステムを共有します。 –

関連する問題