Windows Azure: هل يمكنني تغيير عدد حالات العامل أثناء تشغيل التطبيق على السحابة

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

  •  02-10-2019
  •  | 
  •  

سؤال

هل يمكنني أن أتمكن من تغيير عدد حالات دور العامل أثناء تشغيل التطبيق.

لقد أنشأت تطبيقًا ينفذ سلسلة من الكود بانهلية لعدد من المرات اعتمادًا على استعلام المستخدم. على سبيل المثال ، إذا طلب المستخدم أن تكون النتيجة دقيقة للغاية ، فسيتعين علي تشغيل الرمز لمدة 1000 مرة أو أكثر بشكل متهم على مجموعات بيانات مختلفة. إذا لم يطلب المستخدم أن تكون النتيجة دقيقة ، فسوف أقوم بتشغيل الرمز لمدة 5 مرات بشكل غير طبيعي. يتم تنفيذ تسلسل الكود هذا من قبل دور العامل. سأبدأ تطبيقي مع عدد حالات دور العامل في 5. إذا طلب المستخدم أن تكون النتيجة دقيقة للغاية ، فهل يمكنني زيادة عدد حالات دور العامل في القول 20. بمجرد انتهاء الطلب ، سوف أعدد الحالات مرة أخرى إلى 5.

هل يمكنني فعل هذا. كيف يمكنني أن أفعل هذا. هل سيتم إعادة تشغيل التطبيق إذا قمت بذلك.

هل كانت مفيدة؟

المحلول

نعم، يمكنك أن تفعل هذا. Windows Azure يعرض واجهة برمجة تطبيقات الإدارة لأداء المهام كتوفير وإلغاء أدوار العمال الإضافية.

يمكنك الاطلاع على واجهات التقييم التلقائي لمشروع Lokad.Cloud: http://code.google.com/p/lokad-cloud/wiki/autoscaling

ضمن خدمة QueUeSevice أو خدمة ScurdeDservice ، يمكنك الوصول إلى الخدمات الخاصة بالممتلكات.

نصائح أخرى

نعم ، يمكنك أيضًا تكوين كتلة تطبيق Autoscaling (Wasabi) للقيام بذلك نيابة عنك. لمزيد من المعلومات ، انظر هذا رد و http://aka.ms/autoscaling:

يمكنك أيضًا استخدام المعلومات من هذا: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.");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top