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

是的,您还可以配置自动缩放应用程序块 (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 回答