1

Nous devons synchroniser les données entre différents serveurs Web. L'idée est très basique: lorsqu'une entité est créée sur un serveur, elle doit être envoyée à tous les autres serveurs. Quelle est la bonne façon de le faire? Nous évaluons actuellement 2 approches: les services sqs et sns d'amazon et l'implémentation personnalisée avec une base de données de valeur-clé (comme memcached et memqueue). Quels sont les pièges courants des implémentations personnalisées? Tous les commentaires seront très appréciés.Amazon sqs vs implémentation personnalisée

Répondre

2

SQS fonctionnerait correctement si vous créez une nouvelle file d'attente pour chaque serveur et écrivez les données dans chaque file d'attente. Le plus gros inconvénient est que vous aurez besoin de chaque serveur pour interroger les nouveaux messages. SNS fonctionnerait plus efficacement car il vous permet de diffuser un message à plusieurs emplacements. Cependant, c'est un essai unique; Si une machine ne peut pas recevoir sa notification lorsque SNS l'envoie, SNS ne réessayera pas. Vous ne spécifiez pas le nombre de messages que vous envoyez ou vos exigences de performance, mais tout système SQS/SNS sera probablement beaucoup plus lent (principalement en raison des latences entre l'envoi du message et les serveurs le recevant) puis une solution de serveur local memcache/clé-valeur.

Une solution mixte consisterait à utiliser un magasin persistant (comme SimpleDB) et à utiliser SNS pour avertir les serveurs que de nouvelles données sont disponibles.