J'ai un site Web qui est développé en utilisant ASP.NET et MY DB est MySQL. Actuellement, il héberge aux USA Servers. Mais lorsque j'essaie d'y accéder près de l'Inde, le contenu dynamique se charge trop lentement. C'est acceptable car la demande doit aller à un autre bout du monde. Aux États-Unis, c'est vraiment rapide. J'ai déjà connecté ce site avec cloudflare CDN. Mais CDN est utile pour les contenus statiques. Mes pages ont presque un contenu dynamique.
Je veux donc faire évoluer ce site Web. Donc, si une demande est venue d'Amérique, je veux gérer cette demande du serveur américain et si une demande est venue d'Asie, je veux que cela soit géré par un serveur ASIAN. Mais gardez à l'esprit que peu importe où ils ont été redirigés, le contenu doit être le même sur deux serveurs. (Deux serveurs doivent être synchronisés)
Alors, comment réaliser cette architecture?
Comment Google, Facebook, Yahoo font-ils cela? Comment servent-ils dans le monde entier? Je pense qu'ils ont des centres de données sur tous les continents. Comment se synchronisent-ils entre eux?
Il y a des situations où vous aimeriez avoir:
Malheureusement, la combinaison de tout ce qui précède n'est pas physiquement possible. Vous serez contraint par la vitesse de la lumière.
Au lieu de cela, vous devez considérer vos besoins exacts. Pour certaines données, une précision limitée est suffisante. Considérez le compteur de vues sur une vidéo YouTube. La plupart des gens ne se soucient pas si le compteur de vues est temporairement un peu éteint. Si les vues qui se sont produites il y a 10 secondes de l'autre côté du monde ne sont pas encore incluses, mais les vues qui se sont produites il y a 5 secondes de plus près sont incluses, cela reste suffisamment précis. Si vous êtes si détendu avec l'intégrité du compteur de vues, vous courez le risque que deux personnes différentes pensent toutes les deux qu'elles étaient le spectateur numéro 100 de cette vidéo en particulier. Mais la plupart des gens considéreraient le préjudice causé par cela comme négligeable.
Dans d'autres cas, l'intégrité des données est plus importante. Considérez deux personnes essayant simultanément de s'inscrire avec le même nom d'utilisateur. Dire aux deux personnes qu'elles ont obtenu le nom d'utilisateur n'est pas acceptable, donc dans une telle situation, vous choisiriez une approche plus lente avec une meilleure intégrité. Il est acceptable de dire aux deux personnes que le nom d'utilisateur a été pris, donc une approche possible serait d'essayer de réserver le nom d'utilisateur sur chaque réplique et de ne signaler le succès que si vous avez réussi sur plus de 50% des répliques. Il n'est pas improbable que cette approche oblige l'utilisateur à attendre une demi-seconde pour obtenir une réponse. Mais les utilisateurs ne suivent pas ce processus assez souvent pour être gênés par ce délai.
Dans d'autres cas encore, vous pouvez avoir besoin d'une bonne intégrité et de mises à jour rapides, mais une seule personne peut mettre à jour cette donnée particulière. Dans ce cas, vous pouvez placer la copie faisant autorité des données sur un serveur que vous pensez être proche de cet utilisateur et laisser aux autres serveurs une version mise en cache, qui est principalement à jour.
la source