Windows Azure: ¿Puedo cambiar las instancias de rol de trabajo cuentan mientras la aplicación se está ejecutando en la nube

StackOverflow https://stackoverflow.com/questions/3173109

  •  02-10-2019
  •  | 
  •  

Pregunta

¿Puedo ser capaz de cambiar las instancias cuentan de un rol de trabajo mientras se ejecuta la aplicación.

He creado una aplicación que ejecuta una secuencia de código en paralelo un número de veces en función de la consulta del usuario. Por ejemplo, si el usuario solicita que el resultado sea muy preciso, entonces tendrá que ejecutar el código para 1000 o más veces en paralelo en diferentes conjuntos de datos. Si el usuario no solicita que el resultado sea exacto, entonces voy a ejecutar el código de 5 veces en paralelo. Esta secuencia de código es ejecutado por un rol de trabajo. Voy a empezar el mi solicitud con los casos cuentan de un rol de trabajo a ser 5. Si la solicitud del usuario que el resultado sea muy preciso, entonces puedo incrementar los casos cuentan del papel del trabajador que decir 20. Una vez que el pedido está terminado, pondré los casos cuentan de nuevo a 5.

¿Puedo hacer esto. Cómo puedo hacer esto. ¿La aplicación se reiniciará si hago esto.

¿Fue útil?

Solución

Sí, usted puede hacer esto. Windows Azure expone API de gestión para llevar a cabo tareas como el aprovisionamiento y desaprovisionamiento roles de trabajo adicionales.

Usted puede comprobar a cabo interfaces de Auto-escalamiento de proyecto Lokad.Cloud: http : //code.google.com/p/lokad-cloud/wiki/AutoScaling

  

Dentro de un QueueService o una ScheduledService, puede acceder a la propiedad CloudService.Providers.Provisioning que le conceda un acceso programático a la tela de nubes con el fin de ajustar el número de trabajadores corriendo para su aplicación.

Otros consejos

Sí, también puede configurar el bloque de aplicación Autoscaling (wasabi) para hacer eso por usted. Para obtener más información, consulte esta Reponse y http://aka.ms/autoscaling :

También puede utilizar la información de esta: http: // Blog .maartenballiauw.be / post / 2011/03/21 / Windows Azure-y-escala-cómo- (NET) .aspx

Principalmente:

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.");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top