Service Fabric: конвейер Reliable Services с балансировкой нагрузки на разделы

При попытке внедрить конвейер Reliable Services Service Fabric у меня было три подхода на выбор:

введите здесь описание изображения

И похоже, что C — хороший путь. Подробности здесь.

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

Например, у меня есть 2 вида рабочих услуг. Первый связан с вводом-выводом и не требует масштабируемости. Второй связан с ЦП, и для него требуется масштабируемость, поэтому он использует секционирование. Меня не волнует, какой именно раздел будет использоваться для обработки конкретного элемента, поэтому насос сообщений должен действовать как балансировщик нагрузки и помещать элемент в очередь для службы, привязанной к ЦП, с минимальным количеством элементов во входной очереди. На данный момент я создал службу с отслеживанием состояния для этой цели.

В этой форме это очень похоже на конвейер потока данных TPL.

Мой вопрос заключается в том, правильно ли я использую Service Fabric? Нет ли здесь чрезмерной инженерии?

Подходят ли Reliable Actors лучше для такого рода конвейеров? (или часть конвейера)

введите здесь описание изображения


person AsValeO    schedule 18.11.2015    source источник


Ответы (1)


Я не думаю, что Актеры были бы правильным решением этой проблемы. Метод RunASync() трудно имитировать в Актере. Для этого можно использовать таймеры и напоминания, но это кажется неестественным. Так что я бы пошел с обслуживанием для этого.

person Michiel Overeem    schedule 27.11.2015