2017-12-04 22 views
0

私は現時点で解決するには少し問題があり、SFフレームワークで私にとって正しいソリューションを見つけることができないようです。問題は、しかし簡単で、で構成されていますAzureサービスファブリック:パーティションキーID(Int64RangePartitionInformation)を使用してプロキシを作成

  • 私持っている私が通じたサービスのすべてのパーティションを見つけることができますInt64RangePartition:

    _fabricClient.QueryManager.GetPartitionListAsync(_globalStatsSvcUri)

  • をこれは正常に動作しますが、NamedPartitionsスキームとは異なり、Intキーを使用せずにサービスを使用するサービスプロキシ(リモーティング付き)を作成することはできないようです。

    IGlobalStatsSvc globalStatsSvc = ServiceProxy.Create(_globalStatsSvcUri、partitionKey);

  • 具体的なケースは、並列統計計算サービスを拡張できるようにすることですが、プロファイルIDとの接続を維持できるようにすることです。したがって、私はInt64RangePartitionスキームを選択したいと思います。

  • しかし、システムのグローバル統計情報を照会する必要があるときは、すべてのパーティションを並列に呼び出してから、平均、分散、および標準をChanのアルゴリズムで集計する必要があります。

  • これを実行するには、どのIntキーがパーティションにマッピングされているかを知らずにプロキシを作成できる必要があります。パーティションKey Idだけが必要です。

  • 悲しいことに、SFはRangedPartitionではなくNamedPartitionスキームで後者を行うことしかできないようです。

誰にもこの特定のケースの解決策がありますか? NamedPartitionスキームを選択することはできますが、統計情報が変更された場合はもっと複雑になります(少なくともランダムなパーティション名が統計的に互換性があることを確認する必要があります)。もう1つの解決策は、私が解決したパーティションIDでURLを構築できるようにするために、サービスにプロキシを手動で作成することです。しかしSFで提供されている厳密に型付けされたクライアントは、より多くの作業を行います。

RangedPartitionスキームで2つの動作を混ぜるのは、編集時に変更するパーティションを知り、集計を行う必要があるときに読み取り時にすべてのパーティションを照会できるため、はるかに簡単です。

答えて

0

私はまだSFフレームワークの新機能ですが、サービスのパーティションリストを照会すると、特定のパーティションの下位と上位キーに関する情報が表示されます。

したがって、プロキシ経由でサービスを呼び出す前に、これらのIDを渡すだけで済みます。

十分なシンプル:

VAR partitionInformation = partition.PartitionInformation Int64RangePartitionInformationとして;

var partitionKey =新しいServicePartitionKey(partitionInformation.LowKey);

関連する問題