Совместно ли объекты используются разными рабочими ролями в службе фабрики Azure? - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над ядром Asp.Net с сервисной фабрикой Azure.У нас также есть служба без гражданства.На портале Azure у нас есть 5 узлов, и для каждого узла у нас есть 2 экземпляра.Я реализовал механизм регистрации.Я также использую внедрение зависимостей.

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

В настоящее время я создал объект для таких значений и назначил этот объект классу журналирования всякий раз, когда я брал документ.

Это работает нормально, когда я работаю в локальной среде, потому что у меня есть один узел и один экземпляр.Как только я перешел в Azure, он начинает перезаписывать значения.

Как этого избежать?Как я могу убедиться, что значение не должно изменяться до тех пор, пока оно не будет обработано?

Для Asp.Net у нас есть сеанс, есть ли у нас что-то подобное для рабочей роли?

Спасибо за ваш вклади руководство.

1 Ответ

0 голосов
/ 07 июня 2018

Я думаю, что ваша проблема связана с моделью размещения Service Fabric

У Service Fabric есть две модели: Общий процесс и Эксклюзивный процесс .

Общая модель используется по умолчанию, когда вы не указываете модель хостинга при создании службы, эта модель будет использовать один процесс для размещения нескольких реплик из одного и того же CodePackage (исполняемого файла),Это означает, что когда вы запускаете несколько реплик на одном узле, он создает один процесс и инициализирует любую новую реплику в этом процессе.Это большая проблема при использовании статических и singleton объектов, потому что все реплики будут видеть один и тот же объект, но в вашем коделогика должна быть разной для каждого экземпляра вашей службы.

Эксклюзивный процесс будет создавать новый процесс каждый раз, когда новая реплика размещается на том же узле.Так что, если вы используете static или singleton объекты, это должна быть модель для использования.

...