Более одного экземпляра службы без сохранения состояния на узел - PullRequest
0 голосов
/ 15 мая 2018

Моя служба без сохранения состояния получает задачи из очереди служебной шины и обрабатывает ее. Сейчас я пытаюсь найти оптимальный способ максимально использовать ресурсы узла Service Fabric. Итак, я вижу 2 подхода: 1) создать несколько потоков внутри службы 2) создать несколько экземпляров службы на узел. Я считаю, что 2-й способ более безопасен и корректен, но когда я указал InstanceCount = 5 для кластера с 1 узлом, я получил предупреждение.

Config.xml

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/EmailSenderApp" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="MainService_InstanceCount" Value="1" />
    ...
  </Parameters>
</Application>

Ошибка:

Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.
Partition is below target replica or instance count.
fabric:/EmailSenderApp/EmailSenderMainService 5 1 09916a6b-1701-46ce-a281-0e223a68f980
Ready _Node_0 131708550454646056
(Showing 1 out of 1 instances. Total available instances: 1)

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Как упомянул @Diego Mendes, это невозможно.

Исходя из документации, я бы сказал, что Service Fabric ожидает, что экземпляр службы сможет использовать все доступные ресурсы, и сообщит соответствующие метрики, чтобы служба Cluster Manager могла сбалансировать нагрузку между узлами в кластере.

В случае, когда доступного ресурса недостаточно, масштабирование выполняется в терминах узлов, т. Е. Необходимо добавить дополнительные узлы в кластер, а в случае службы без сохранения состояния (если InstanceCount = -1) автоматически создаются новые экземпляры.

0 голосов
/ 15 мая 2018

В настоящее время это невозможно, иметь более одного основного раздела на одном узле.

SF имеет ограничения на размещение, чтобы заблокировать это. Мое мнение таково, что это ошибка, b потому что нет проблем с потерей состояния на службе без сохранения состояния, по этой причине я открыл проблему GitHub для Разрешить одноразовое сохранение без сохранения состояния сервисы имеют несколько экземпляров на узел в обход ограничения размещения

Чтобы разобраться в этой проблеме, я приведу вам ответ с вариантами решения аналогичной проблемы:

Имитация 10 000 подключений устройств-концентраторов IoT Azure из кластера Azure Service Fabric

...