В настоящее время мы разрабатываем систему, которая должна быть способна обрабатывать большое количество сенсорных событий.
Поскольку требуется обрабатывать миллионы различных экземпляров датчиков, я подумал, что модель Service Fabric Actor Model идеально подойдет. Итак, идея заключалась в том, чтобы иметь одного Актера, который отвечал бы за обработку событий одного датчика (SensorId = ActorId).
Сопоставление простое, и, поскольку нам нужно запрашивать данные только по определенному SensorId, у нас есть все в одном месте, что обеспечивает действительно быстрый поиск.
Проблема в том, что (несколько) датчиков отправляют данные со скоростью, с которой один субъект больше не может справиться.
Это то место, где мы сейчас застряли, мы не можем намекнуть системе и сказать ей, чтобы она распределяла нагрузку на большее количество Актеров для определенных датчиков, таких как Sensor123 и Sensor567.
Есть ли возможность решить эту проблему с помощью виртуальной системы акторов, предоставляемой Service Fabric?
Обновление 1:
Думаю, у нас нет проблем с масштабированием одного актера. Мы получаем около 5 тыс. Сообщений / с для одного уникального актера. Но некоторым датчикам нужна целевая пропускная способность 50–100 тыс. / С. Таким образом, по замыслу (однопоточное исполнение) ни один актер не сможет этого добиться.
Итак, чтобы прояснить исходный вопрос: мы более или менее ищем способ автоматического разделения «некоторых» актеров.
(Конечно, мы могли бы создать 10 актеров для каждого датчика, чтобы разделить нагрузку. Но это сделало бы поиск неэффективным, и, кроме того, нам нужно было бы в 10 раз больше оперативной памяти. Это не кажется оправданным, потому что 0,5–1% датчиков нуждаются в большей пропускной способности. )