2017-02-27 2 views

Répondre

1

Un moyen facile pour toutes les instances d'attendre pendant que l'on travaille est de faire en sorte que l'instance maître place un lease on a blob in Azure storage. WorkerRole.cs de l'instance maître au démarrage crée un fichier blob dans un conteneur Azure avec un bail. Libère le bail lorsqu'il est initialisé. Les instances esclaves tentent de lire le même fichier au démarrage et attendent que le bail soit libéré. si elle est libérée, le fichier blob doit contenir une sorte d'indication que l'initialisation est terminée

Savez-vous quelle instance d'un rôle Cloud vous voulez maîtriser? Est-ce le premier qui démarre, ou le premier alphabétique? Si c'est le premier qui démarre, le problème est plus simple - car chaque instance devrait essayer de créer/louer le fichier et tous sauf un échoueront.

Si c'est le premier alphabétique, puis examiner RoleEnvironment.Instance.Id (allant de la mémoire) et ont tournoyer le code de initilization si elle est le « RoleName_IN_1 » ne

Depuis les instances peuvent redémarrer de façon arbitraire, faire assurez-vous qu'ils n'essaient pas de se réinitialiser - vous devrez réfléchir à la meilleure façon de le gérer - probablement en insérant une sorte d'horodatage dans le fichier blob.

+0

Le problème se pose avec le "instance devrait essayer de créer/louer le fichier et tous sauf un échouera." - ce n'est pas vrai parce que l'instance N peut apparaître après que l'initialisation complète soit terminée et qu'elle ne le sache pas - si l'initialisation est déjà terminée ou si c'est la première instance - le fichier d'initialisation est là et n'est pas verrouillé aussi parce que la première instance à venir a fait le travail et a publié le fichier. Ceci est possible car les instances ne sont créées qu'après la première requête. J'ai besoin de quelque chose qui identifie le redémarrage du service lui-même. –

+0

S'il y a un stockage de service commun ou un "dictionnaire fiable" ou quelque chose de commun entre les RoleEntryPoints qui est effacé/réinstancié sur chaque service, redémarrer en dehors de l'environnement fera le travail. –