3

A と B の 2 つの Azure ワーカー ロールがあります。

  • A は、毎分ジョブを実行する Quartz スケジューラーです。
  • 「Redisキャッシュ」から毎分いくつかのIDを読み取り、それらのIDのジョブを実行します。
  • 'A' は、Worker ロール 'B' によってサブスクライブされている Service Bus キューにその出力を発行します。
  • 'B' ワーカー ロールは、キューから値を読み取り、それらに対してさらに操作を実行します。
  • どちらのワーカー ロールも、起動時にキャッシュを構築する必要があります。

次に、Azure コンポーネントの障害に関するいくつかの問題を示します。

  • Redis キャッシュがダウンした場合、どう対処すればよいでしょうか。実行が再開されるまで実行を停止する必要があります。その後、キャッシュを再度構築する必要があります。'B' ワーカー ロールは、Redis が再び起動するまで、サービス バスからのメッセージのプルを停止する必要があります。

  • ワーカー ロール 'B' でサービス バスの障害を処理するにはどうすればよいですか?

4

2 に答える 2

0

考えられる解決策の 1 つは、ワーカーがサービス バスまたはキャッシュからプルする前にチェックする外部ヘルス サービスを構成することです。ヘルス サービスがキャッシュまたはサービス バスがダウンしていると言った場合、ワーカーは何も処理しようとしません。

于 2016-07-06T16:44:42.767 に答える
0

You don't need to stop any of the worker roles.

Worker role A should be resilient to issues in Redis cache, meaning that your code should handle any exception thrown by Redis (or network exceptions), either by retry or swallow the exception.

Worker role B should constantly pull messages from the service bus. If worker role A doesn't publish data, then worker role B should handle empty results.

Stopping your service on Redis/Azure glitch will require you to handle more complicated scenarios - for example: automatically detect if Redis is up again and automatically start your service.

于 2016-07-06T14:46:39.117 に答える