タグ付けされた質問 「pooling」

10
C#オブジェクトプーリングパターンの実装
Sql接続プーリングの範囲内で、限られたリソースに対して共有オブジェクトプール戦略を実装するための優れたリソースを持っている人はいますか?(つまり、スレッドセーフであることを完全に実装します)。 明確化のために@Aaronaughtリクエストに関してフォローアップすることは、プールの使用が外部サービスへのリクエストのロードバランシングのためになることです。私の直接的な状況とは対照的に、おそらくすぐに理解しやすいシナリオにそれを置くこと。同様に機能するセッションオブジェクトがあります。ISessionNHibernateオブジェクトます。一意の各セッションがデータベースへの接続を管理すること。現在、1つの長時間実行セッションオブジェクトがあり、サービスプロバイダーがこの個別セッションの使用をレート制限しているという問題が発生しています。 単一のセッションが長時間実行されるサービスアカウントとして扱われるという期待の欠如のため、彼らは明らかに、サービスをハンマーしているクライアントとしてそれを扱います。ここで私の質問に移動します。個別のセッションを1つ持つ代わりに、以前のように単一のフォーカルポイントを作成するのではなく、異なるセッションのプールを作成し、複数のセッションにわたってサービスにリクエストを分割します。 うまくいけば、その背景にはいくつかの価値がありますが、いくつかの質問に直接答えることができます: Q:オブジェクトの作成には費用がかかりますか? A:限られたリソースのプールであるオブジェクトはありません Q:非常に頻繁に取得/リリースされますか? A:はい。これもまた、NHibernate ISessionsと考えることができます。この場合、通常、1つのページ要求ごとに1が取得および解放されます。 Q:単純な先着順で十分でしょうか、またはよりインテリジェントなもの、つまり飢餓を防ぐものが必要ですか? A:単純なラウンドロビンタイプの配布で十分です。飢餓により、発信者が解放を待ってブロックされる使用可能なセッションがない場合を想定しています。セッションは異なる呼び出し元で共有できるため、これは実際には適用できません。私の目標は、単一のセッションではなく、複数のセッションに使用量を分散することです。 これはおそらく、オブジェクトプールの通常の使用法との相違であると考えられます。そのため、もともとこの部分を省略し、パターンを調整してオブジェクトの共有を可能にすることを計画しました。 Q:優先度、遅延読み込みと積極読み込みなどはどうなりますか? A:優先順位付けは含まれていません。簡単にするために、プール自体の作成時に使用可能なオブジェクトのプールを作成すると仮定します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.