Состоящие или не имеющие состояния субъекты C#

Я разрабатываю проект, который будет активировать и контролировать много асинхронных актеров одновременно.

Я хотел бы спросить, какой подход я должен использовать для большей стабильности и масштабируемости?

Без гражданства или с состоянием?

Насколько я вижу разницу, это выглядит так:

а. Stateful

Actor _act = new Actor (long key);

_act.DoSomething (object _what);

б. Stateless

Actor _act = new Actor (long key);

_act = _act.DoSomething(object _what);

Как я знаю, второй способ дорогой - резервирование памяти и т. Д. Но этот второй подход позволяет не беспокоиться о состоянии и блокировках.

Какой способ предпочтительнее для dotnet? Число участников, которых нужно достичь, составляет около 100 тыс., С 2,5-3 милями операций в секунду для одного узла.

PS Каждый актер имеет свой конечный автомат для вычисления.

Для Stateful его вызывается периодическим асинхронным делегатом

Для безгражданства это требует каждой операции с учетом измерения времени.

1 ответ

Модель Actor Programming основана на идее, что каждый Actor должен быть уникальной и отдельной вычислительной сущностью с автономным "состоянием". Трудно сказать, основываясь на фрагменте кода, что вы предоставили преимущества, которые вы могли бы получить на самом деле, используя один метод над другим, но, по моему мнению, вы, по крайней мере, несколько побеждаете саму идею актеров, не инкапсулируя их состояние в таким образом, что вы можете использовать такие вещи, как свободный код блокировки.

Другие вопросы по тегам