いくつかの調査を行った後も、Azureテーブルストレージとの「接続」を維持するにはどうすればベストなのかまだ分かりません。 CloudTableClient
またはCloudTable
のインスタンスを複数の要求に再利用する必要がありますか?トランザクションごとにCloudTableClientとCloudTableの新しいインスタンスを作成する
大量のトラフィックが多いパブリックなAPIの背後にあるテーブルストレージを使用しています。高い可用性とパフォーマンスが求められます。すべての照会はPOINT照会(パーティション・キーと行キーの両方が使用可能)であり、応答の支払いはサイズが小さく(1キロバイト未満)書き込みパフォーマンスは大きな問題ではありません。 APIの各リクエストは、いくつかのパーティションにわたって最大10ポイントのクエリを読み取ることができます。
私の読書から、私は次のことを理解している:
CloudTableClient
はスレッドセーフではなく、すべての取引のために作成する必要があります。これは、継続的に再作成されたときのパフォーマンスを妨げないはずです。したがって、トランザクションごとにインスタンスを作成する必要があります。
正しい前提はありますか?
私はこのようにすべてのリクエストに対してCloudTableClient
とCloudTable
を再初期化しています。それは無駄だと感じています。
は、実装を参照してください:
public class EntityStorageComponent : IEntityComponent
{
private CloudStorageAccount storageAccount;
public CloudTable Table
{
get
{
var tableClient = storageAccount.CreateCloudTableClient();
ServicePoint tableServicePoint = ServicePointManager.FindServicePoint(storageAccount.TableEndpoint);
tableServicePoint.UseNagleAlgorithm = false;
tableServicePoint.ConnectionLimit = 100;
var context = new OperationContext();
context.Retrying += (sender, args) =>
{
Debug.WriteLine("Retry policy activated");
};
// Attempt delays: ~200ms, ~200ms, ~200ms
var requestOptions = new TableRequestOptions
{
RetryPolicy = = new LinearRetry(TimeSpan.FromMilliseconds(200), 3),
MaximumExecutionTime = TimeSpan.FromSeconds(60)
};
var table = tableClient.GetTableReference("farematrix");
table.CreateIfNotExists(requestOptions, context);
return table;
}
}
public EntityStorageComponent(IOptions<ConfigurationOptions> options)
{
storageAccount = CloudStorageAccount.Parse(options.Value.TableStorageConnectionString);
}
public SomeEntity Find(Guid partitionKey, Guid rowKey)
{
var retrieveOperation = TableOperation.Retrieve<SomeEntity>(partitionKey, rowKey);
var retrievedResult = Table.Execute(retrieveOperation);
return retrievedResult.Result as SomeEntity;
}
}
「Azure Table Storageとの接続を維持するにはどうすればよいのかまだわかりません。 –
@ GauravMantri:本質的に、 'CloudTableClient'または' CloudTable'インスタンスはリクエスト間で再利用されるべきですか?私は、要求が行われるたびにこれらを再作成しなければならないというパフォーマンス上の不安を懸念しています(潜在的に毎分1000回)。 – davenewza