Каков наилучший способ написания пакетного процессора с использованием Service Fabric?

Нам нужно иметь возможность работать с результирующим набором записей хранимой процедуры. Обработка будет одинаковой для каждой отдельной записи, мы хотели бы иметь многопоточность и не сталкиваться с какой-либо блокировкой. Вы бы порекомендовали здесь актера или состояние?


person Adrian    schedule 20.11.2017    source источник
comment
Трудно ответить без дополнительной информации. Насколько большим может быть набор записей? Можно ли обрабатывать по одной записи за раз или нужно обрабатывать по принципу «все или ничего»? Сколько времени занимает обработка каждой записи? Их нужно обрабатывать по порядку? Если набор записей не очень большой, я бы, вероятно, использовал StatefulService, который порождает несколько актеров. Особенно, если для обработки требуется доступ к какой-либо внешней службе. Это делает код довольно простым и позволяет вам легко создавать новые типы Актеров, если некоторые записи потребуют новой обработки в будущем.   -  person HiredMind    schedule 10.12.2017


Ответы (1)


Краткий ответ без дополнительной информации:

Создайте службу с отслеживанием состояния для получения запросов на обработку наборов записей (включите набор записей, который необходимо обработать, или процедуру получения набора записей, или сохраните его где-нибудь, чтобы его можно было вызвать). Затем внутри службы с отслеживанием состояния выполните итерацию по набору записей, разбирая обработку для отдельных субъектов. Вы можете генерировать случайные идентификаторы, если вам не важно, сколько участников, или вы можете ограничить обработку конечным набором. Если вы выберете первое, вам придется подумать о масштабе — сколько процессоров может безопасно работать одновременно без масштабирования? Если вы используете последний вариант, вам понадобится какая-то обработка очереди или инфраструктура pub/sub в акторах, чтобы вы могли разделить работу и убедиться, что все сделано.

person Fourth    schedule 08.05.2018