Question

Je dois construire serveur Identity comme http://login.live.com .

Pour le basculement gérer j'avoir plusieurs nœuds de serveurs Web. Le plan est que toutes les opérations d'écriture de base de données sont effectuées en envoyant des messages au serveur de base de données. Base de données en miroir ou répliqué. L'idée est que la base de données est abonnée aux opérations d'écriture mais que d'autres noeuds sont également abonnés. De cette façon, les autres nœuds ne pas besoin de lire la base de données et peuvent mettre à jour leurs caches.

Je commence tout juste à apprendre l'architecture de bus de service et ce qui est pas clair pour moi est de savoir comment gérer le scénario de basculement pour le bus de service.

Question:

  1. Si le serveur de base de données ne sont pas disponibles, ce qui va se passer avec les messages publiés?
  2. Seront-ils stockés quelque part et où?
  3. Ai-je besoin machine supplémentaire ou un cluster de basculement de la poignée du bus de service?
  4. J'ai lu que SQL Server peut être utilisé comme un magasin de message, mais puis-je utiliser MSMQ durable? Je les messages qui font la queue pour pouvoir les écrire dans la base de données, alors pourquoi devrais-je les stocker à la DB d'abord juste pour les prendre et de les écrire à nouveau? OU, je reçois ce mal et DB est utilisé uniquement pour la liste des abonnements et non pour les messages?
Était-ce utile?

La solution

  1. Cela dépendra de la façon dont il est configuré, mais MassTransit vous pouvez laisser l'abonnement actif pour que le message sera toujours livré à la file d'attente pour la DB. Lorsque la DB est à nouveau actif, vous pouvez lire les messages dans la file d'attente.

  2. Chaque service connecté à un bus de service, en MassTransit, a une file d'attente active pour elle-même. Les messages seront stockés là.

  3. Je pense que c'est « ça dépend » ... MassTransit a le soutien d'autres logements familiaux que MSMQ mais est vraiment construit autour MSMQ. Nous avons pas connu un grand soutien pour des choses telles que le basculement de MSMQ. Cependant, tout continuera à fonctionner sans faute si le service d'abonnement (à savoir le bus) ne - les services savent déjà à qui parler. Il est seulement quand un changement dans un consommateur (abonner ou vous désabonner) lorsque cela devient un problème. Pour moi, c'est un événement qui se produit presque jamais.

  4. Avec MassTransit, nous utilisons le DB pour stocker les états de souscription, mais tous les messages sont stockés dans MSMQ.

Si vous souhaitez obtenir plus de détails dans l'une de ces réponses ou avez des questions supplémentaires au sujet de MT, vous pouvez nous rejoindre sur la liste de diffusion: http://groups.google.com/group/masstransit-discuss .

Autres conseils

Whe mettre en œuvre ce type d'architecture, vous devriez regarder à appliquer les principes de CQRS - requêtes (est cet utilisateur / passwd combo valide) ne doit pas être fait par le bus; commandes (changement PWD Mot PWD) sont envoyés par l'intermédiaire du bus, non publiée comme événements. Tandis qu'à l'intérieur, vous utiliserez probablement des événements pour garder les commandes et les côtés requête en synchronisation, cela ne concerne pas le client.

Les requêtes peuvent être fait en utilisant ado.net simple contre les esclaves-lire répliquées de votre DB - ce qui est connu comme le modèle de vue persistant dans CQRS. Si vous le souhaitez, vous pouvez mettre un peu WCF simple devant aussi.

Lorsque vous utilisez MSMQ, tous les messages sont livrés par magasin et en avant. Cela signifie qu'ils sont d'abord stockés sur le client avant d'être livré au serveur, donc si le serveur est en panne, les messages sont assis sur l'attente du client. Pour la tolérance aux pannes, vous voulez que vos messages soient récupérables (écrites sur le disque) - valeur par défaut dans NServiceBus mais pas la valeur par défaut de MSMQ standard (ne savent pas MassTransit). Vous n'avez pas besoin de la base de données pour cela.

En NServiceBus, le bus est pas installé sur une machine séparée de sorte que vous n'avez pas besoin pour faire face à sa disponibilité indépendamment du reste du système. Il est seulement quand vous regardez mise à l'échelle de notre traitement de votre commande pour plus de noeuds que vous pouvez envisager d'utiliser l'équilibrage de charge à base de messages dans NServiceBus (appelé le distributeur) qui, pour la haute disponibilité, doit être installé sur un matériel de cluster ou tolérant aux pannes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top