В Service Fabric есть хорошая функция, которая позволяет каждому объекту службы обновлять собственную нагрузку во время выполнения. Динамические отчеты о нагрузке позволяют копиям или экземплярам корректировать распределение/учетную нагрузку показателей за период их жизни. Вот как я могу это сделать в рамках службы:Невозможно сообщить нагрузку для показателей в службе Actors
this.Partition.ReportLoad(new List<LoadMetric> { new LoadMetric("MemoryInMb", 1234)});
Проблема заключается в том, что раздел является защищенной собственностью, которая объявлена в StatefulServiceBase, поэтому он доступен в ActorService, но не актер. Я имею в виду, я не могу делать Actor.ActorService.Partition.ReportLoad (...). Я вижу обходное решение, в котором я мог бы создать свой пользовательский класс обслуживания актеров и сделать это свойство общедоступным, но мне интересно, имеет ли он смысл и есть ли какие-то особые причины, чтобы не иметь возможности сообщать о загрузке в Актерах?
Извините за путаницу, я отредактировал вопрос. Так что да, я могу сообщить нагрузку от ActorService, но не от самого Актера, просто потому, что Актер использует «ActorService», но не получен из него. –
Мне нужно выполнить некоторые задачи по кластеру на основе регулярного расписания. Вот почему меня так интересуют Актеры и Напоминания. Что касается метрик, я думал о том, чтобы использовать их, чтобы Fabric знала, что актеры могут запускать некоторые тяжелые процессы, поэтому, хотя они сами по себе легки, работа, которую они порождают не так много. Таким образом, в моем больном уме, когда показатели, отражающие показатели Актеров, позволят Fabric лучше сбалансировать их. –
Вы можете создать делегат или интерфейс, который инкапсулирует метод ReportLoad из '' '' ActorService'' и передаст это директорию вашего Актера. – LoekD