Очень новый для обслуживания Fabric, используя его в течение дня и внедрили некоторые другие сервисы.При попытке перенести текущий код как POC
я столкнулся с проблемой при попытке развернуть службу с состоянием, которая разбита на разделы.Я устанавливаю счетчик разделов в значение, например 3 на кластере с 1 узлом.Я хочу разделить данные, полученные при запуске приложения между этими разделами.
Для реального приложения оно при запуске перейдет в базу данных, вытащит список вещей, которые оно будет обрабатывать в течение дня.Все они имеют уникальные идентификаторы, которые можно хэшировать и по модулю запускать на конкретном разделе
Например
var fakeIds = new[] {1, 2, 3, 4, 5, 6, 7, 8};
var idsToRunWith = new List<int>();
var fabricClient = new FabricClient();
var paritionList = await fabricClient.QueryManager.GetPartitionListAsync(new Uri("ServiceName"));
var numberOfPartitions = paritionList.Count;
foreach (var fakeId in fakeIds)
{
var partitionIndex = fakeId % numberOfPartitions;
if (paritionList[partitionIndex].PartitionInformation.Id == Context.PartitionId)
{
idsToRunWith.Add(fakeId);
}
}
Выше приведен только пример того, что я сделал
Кто-нибудь знает лучший способ сделать это в сервисной ткани?
Нужно ли создавать другой сервис, который загружает эти вещи из базы данных и перенаправляет их в сервис на правильном разделе?- стараться не делать этого, так как оно кажется ненужным
Приложение долго разрушается, и этим объектам для обработки назначается за недели вперед
Любая помощь приветствуется