私は、さまざまなプロセスによって定期的に更新される行を持つAzureテーブルストレージにテーブルを持っています。特定の期間内に行がに更新されていないときを効率的に監視し、発生した場合にアラートが生成されるようにしたいと考えています。Azureでの非アクティブ化のための戦略
ほとんどのタスクスケジューラの実装私は、一度に1人のワーカーしか特定のジョブを実行しないようにすることで、Azureの機能について見てきました。ただし、n分を待ってスケジュールされたタスクを設定し、最新のタイムスタンプを照会してアクションを取るべきかどうかを判断すると、作業がワーカに広がらないため、非効率的です。また、非常に多くのレコードをポーリングする必要があるのは、一般的に非効率なようです。
この例を使用すると、過去30日間にWebサイトにログインしていないユーザーに電子メールを送信することができます。効率的なアルゴリズムを生成する目的で、ユーザの数が「多数」であると仮定する。
最近のアクティビティをチェックするために使用できる戦略については、1人の従業員に強制しないでください。
私は単純な例としてユーザーを使用しました。私のデータは実際には各行に対して5秒に1回更新されています。追加のテーブルを更新すると、数千行のテーブルスキャンだけでなく、大幅にオーバーヘッドが発生します。通常は、1人の作業者の過度の負荷を避けるために、実際の作業をキューに入れることができます。しかし、キューが500メッセージ/秒に制限されているとすれば、5000行は待ち行列に入るのに50秒かかります。私は何とか直接処理することを望んでいました。 –
もっと重要なのは、これらの行をすべて同じPKに入れることで、私は500にすることができる更新/秒の数を制限することになります。私は何千もの規模に拡大したいと思います。 –
スキャンが速ければ、私はあなたが何を求めているのか分かりません。スキャンを実行します。 1つのパーティションのスケーラビリティが十分でない場合は、複数のパーティションを使用します。 1つのキューのスケーラビリティが十分でない場合は、複数のキューを使用します。ストレージアカウント全体に制限がある場合は、複数のストレージアカウントを使用することもできますし、異なるストレージテクノロジを検討することもできます。 – smarx