2017-02-22 33 views
0

В Service Fabric есть хорошая функция, которая позволяет каждому объекту службы обновлять собственную нагрузку во время выполнения. Динамические отчеты о нагрузке позволяют копиям или экземплярам корректировать распределение/учетную нагрузку показателей за период их жизни. Вот как я могу это сделать в рамках службы:Невозможно сообщить нагрузку для показателей в службе Actors

this.Partition.ReportLoad(new List<LoadMetric> { new LoadMetric("MemoryInMb", 1234)}); 

Проблема заключается в том, что раздел является защищенной собственностью, которая объявлена ​​в StatefulServiceBase, поэтому он доступен в ActorService, но не актер. Я имею в виду, я не могу делать Actor.ActorService.Partition.ReportLoad (...). Я вижу обходное решение, в котором я мог бы создать свой пользовательский класс обслуживания актеров и сделать это свойство общедоступным, но мне интересно, имеет ли он смысл и есть ли какие-то особые причины, чтобы не иметь возможности сообщать о загрузке в Актерах?

ответ

1

ActorService является результатом StatefulServiceBase. Тебе должно быть хорошо.

Смотреть это: https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicefabric.actors.runtime.actorservice?redirectedfrom=MSDN#microsoft_servicefabric_actors_runtime_actorservice


редактировать: Какую нагрузку метрики у вас есть это специфичные для одного экземпляра актера?

Актеры обычно имеют ограниченный срок службы. Загрузка отчетов - это периодический процесс. Эти двое не очень хорошо сочетаются. Да, вы можете использовать ActorReminders, но зачем использовать их, когда у вас есть ActorService, который может делать то же самое без ограничений?

+0

Извините за путаницу, я отредактировал вопрос. Так что да, я могу сообщить нагрузку от ActorService, но не от самого Актера, просто потому, что Актер использует «ActorService», но не получен из него. –

+0

Мне нужно выполнить некоторые задачи по кластеру на основе регулярного расписания. Вот почему меня так интересуют Актеры и Напоминания. Что касается метрик, я думал о том, чтобы использовать их, чтобы Fabric знала, что актеры могут запускать некоторые тяжелые процессы, поэтому, хотя они сами по себе легки, работа, которую они порождают не так много. Таким образом, в моем больном уме, когда показатели, отражающие показатели Актеров, позволят Fabric лучше сбалансировать их. –

+0

Вы можете создать делегат или интерфейс, который инкапсулирует метод ReportLoad из '' '' ActorService'' и передаст это директорию вашего Актера. – LoekD