3

アプリケーションの実行中にワーカーロールのインスタンス数を変更できますか?

ユーザーのクエリに応じて、一連のコードを並列に実行するアプリケーションを作成しました。たとえば、ユーザーが結果を非常に正確にするように要求した場合、異なるデータセットで1000回以上並列にコードを実行する必要があります。ユーザーが結果の正確さを要求しない場合は、コードを5回並列に実行します。この一連のコードは、ワーカーロールによって実行されます。ワーカーロールのインスタンス数を5としてアプリケーションを開始します。ユーザーが結果を非常に正確にするように要求した場合、ワーカーロールのインスタンス数を20にインクリメントできます。要求が終了したら、インスタンス数を5に戻します。

これはできますか。これどうやってするの。これを行うと、アプリケーションは再起動しますか?

4

3 に答える 3

3

はい、あなたはこれを行うことができます。Windows Azureは、追加のワーカーロールのプロビジョニングおよびプロビジョニング解除としてタスクを実行するための管理APIを公開します。

Lokad.Cloudプロジェクトの自動スケーリングインターフェースを確認できます:http ://code.google.com/p/lokad-cloud/wiki/AutoScaling

QueueServiceまたはScheduledService内で、プロパティCloudService.Providers.Provisioningにアクセスできます。これにより、アプリケーションで実行されているワーカーの数を調整するために、クラウドファブリックへのプログラムによるアクセスが許可されます。

于 2010-07-04T11:13:05.007 に答える
1

はい、Autoscaling Application Block(Wasabi)を設定してそれを行うこともできます。詳細については、この応答http://aka.ms/autoscalingを参照してください。

于 2012-05-02T02:55:11.010 に答える
0

次の情報を使用することもできます: http: //blog.maartenballiauw.be/post/2011/03/21/Windows-Azure-and-scaling-how- (NET).aspx

主に:

var deployment = GetWindowsAzureDeployment();

            string configurationXml = ServiceManagementHelper.DecodeFromBase64String(deployment.Configuration);

            Log.Info("Updating configuration value...");

            var serviceConfiguration = XDocument.Parse(configurationXml);

            serviceConfiguration
                    .Descendants()
                    .Single(d => d.Name.LocalName == "Role" && d.Attributes().Single(a => a.Name.LocalName == "name").Value == RoleName)
                    .Elements()
                    .Single(e => e.Name.LocalName == "Instances")
                    .Attributes()
                    .Single(a => a.Name.LocalName == "count").Value = newInstanceCount.ToString();

            var changeConfigurationInput = new ChangeConfigurationInput();
            changeConfigurationInput.Configuration = ServiceManagementHelper.EncodeToBase64String(serviceConfiguration.ToString(SaveOptions.DisableFormatting));

            Log.Info("Uploading new configuration...");

            ManagementClient.ChangeConfigurationBySlot(SubscriptionId, ServiceName, Slot, changeConfigurationInput);

            Log.Info("Finished uploading new configuration.");
于 2013-06-10T12:57:05.847 に答える