2016-07-28 7 views
2

Мне интересно, реплицируется ли состояние актера в Service Farbic с помощью какого-либо инкрементного механизма delta/diff или полное копирование полного состояния для каждого изменения.Репликация состояния инкрементального актера?

Предположим, что у нас есть актер с довольно большой государственной нагрузкой, скажем, 100 КБ. Давайте также скажем, что значение счетчика встроено в это состояние. Счетчик изменяется на высокой частоте, а остальная часть состояния изменяется на очень низкой частоте.

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

Однако, если служба Farbric способна выполнять инкрементную репликацию, тогда этот подход может быть привлекательным.

Кто-нибудь знает подробности об этом?

Возможно, в сервисе Fabric используется бинарный алгоритм дельта/diff в сериализованном состоянии во время репликации, или, возможно, изменения состояния являются инкрементальными на имя штата?

ответ

2

Это национальное название. Если вы посмотрите на метод IActorStateProvider.SaveStateAsync, вы увидите, что он принимает список ActorStateChange. Постоянный поставщик (KvsActorStateProvider) сериализует каждое из значений в этом списке (за исключением случая удаления) и обновляет хранилище.

+0

Только тот ответ, который я искал. Спасибо! –