Amazon SWF を使用してワークフローを作成していて、ダウンストリーム サービスで TPS を制御する方法を考えていました。
並行して実行される複数の子ワークフローを開始する親ワークフローがあります。
私の子ワークフローは、いくつかのダウンストリーム サービス (それぞれが異なるアクティビティ内) を呼び出します。
- ダウンストリーム サービス 1 を呼び出します。成功した場合は続行し、失敗した場合は終了します
- ダウンストリーム サービス 2 を呼び出します。成功した場合は続行し、失敗した場合は終了します
- 等
ダウンストリーム サービスの TPS を個別に管理できるようにしたいと考えています。
ダウンストリーム サービスで TPS を制限するにはどうすればよいですか? たとえば、理想的には、ダウンストリーム サービス 1 に 100 の最大 TPS が必要であると言えます。非同時コンテキストでは、Guava RateLimiter のようなものを使用できますが、これは複数のホストで実行されます。特定のアクティビティのインスタンスを一度に 100 個だけ実行するように指定できますか? フロー フレームワークでそのための注釈を見つけることができませんでした (フロー フレームワークと Spring を使用しています)。必要に応じて、子ワークフローを個別のワークフローに分割し、親ワークフローで各子ワークフローを次々と呼び出すようにします。
子ワークフロー:
1. take entity id as input
2. call dependent service 1 workflow
3. return
次に、上記が正常に完了すると、親ワークフローは依存サービス 2 を呼び出す次の子ワークフローを呼び出します。失敗すると、親ワークフローは終了します。
特定の依存サービス ワークフローまたは特定のアクティビティのインスタンス数に同時実行制限を設定することは可能ですか? これはタスクリストの良い/潜在的な使用法ですか? ワーカー ホストの数によって TPS を制御できますか?
ご提案ありがとうございます。