La grande majorité des sites ont beaucoup plus de lectures que d'écritures. Il n'est pas rare d'avoir des milliers ou même des millions de lectures à chaque écriture. Par conséquent, toute solution de mise à l'échelle dépend de la séparation de la mise à l'échelle des lectures de la mise à l'échelle des écritures. Normalement, la mise à l'échelle des lectures est vraiment bon marché et facile, la mise à l'échelle des écritures est compliquée et coûteuse. La manière la plus simple de mettre à l'échelle les lectures est de mettre en cache des pages entières à la fois et de les expirer après un certain nombre de secondes. Si vous regardez le site Web populaire, Slashdot. vous pouvez voir que c'est ainsi qu'ils font évoluer leur site. Malheureusement, cette stratégie de mise en cache peut entraîner un comportement contre-intuitif pour l'utilisateur final.
Je suppose de votre question que vous ne voulez pas ce genre de cache primitif. Comme vous l'avez mentionné, vous devrez mettre à jour le cache en place.
Ce n'est pas aussi effrayant que cela puisse paraître. La principale chose à réaliser est que du point de vue du serveur . Stackoverflow ne se met pas à jour tout le temps. Il met à jour assez rarement. Peut-être une ou deux fois par seconde. Pour un ordinateur, une seconde est presque une éternité.
En outre, les mises à jour ont tendance à se produire pour les éléments du cache qui ne dépendent pas les uns des autres. Considérons Stack Overflow comme exemple. J'imagine que chaque page de question est mise en cache séparément. La plupart des questions ont probablement une mise à jour par minute en moyenne pendant les quinze premières minutes, puis probablement une fois par heure après.
Ainsi, dans la plupart des applications, vous avez à peine besoin de mettre à l'échelle vos écritures. Ils sont si peu nombreux et éloignés que vous pouvez avoir un serveur qui fait les écritures; La mise à jour du cache est en fait une solution parfaitement viable. À moins d'avoir un trafic extrêmement élevé, vous obtiendrez très peu de mises à jour simultanées sur le même élément mis en cache en même temps.
Alors, comment configurez-vous cela? Ma solution préférée consiste à mettre en cache chaque page individuellement sur le disque et à avoir de nombreuses têtes Web fournissant ces pages statiques à partir d'un espace mutuellement accessible.
Lorsqu'une écriture doit être effectuée, elle est effectuée à partir d'un seul serveur, ce qui met à jour cette page html en cache particulière. Chaque serveur possède son propre sous-ensemble du cache, donc il n'y a pas un seul point de défaillance. Le processus de mise à jour est soigneusement conçu de sorte qu'une transaction s'assure que deux demandes n'écrivent pas dans le fichier exactement au même moment.
J'ai trouvé que ce design répondait à toutes les exigences de mise à l'échelle requises jusqu'à maintenant. Mais cela dépendra de la nature du site et de la nature de la charge pour savoir si c'est la bonne chose à faire pour votre projet.
Merci, je vais jeter un coup d'oeil. – Ben