Quand utiliser l’équilibrage de charge?

Je ne fais qu’entrer dans les parties les plus complexes du développement Web. Cela peut ne pas être dans le meilleur endroit. Cependant, quand est-il préférable d’obtenir un équilibrage de charge pour un projet Web? Je comprends que cela dépend de la bonne conception / mauvaise conception du nombre d’utilisateurs que vous pouvez visiter sur un site sans que cela n’affecte vraiment les performances. Cependant, je prévois de coder un nouveau projet qui pourrait potentiellement avoir beaucoup d’utilisateurs et je me demandais si je devais réfléchir à propos de l’équilibrage de charge. Les opinions sont les bienvenues; Merci d’avance!

Je ne devrais pas aussi que le projet sera probablement asp.net (webforms ou mvc pas encore décidé) avec backend de mongodb ou pgsql (encore une fois encore en train de décider).

L’équilibrage de charge peut également être une forme de haute disponibilité. Que se passe-t-il si votre serveur Web tombe en panne? Cela peut prendre beaucoup de temps pour le remplacer.

Généralement, lorsque vous devez réfléchir au débit, vous êtes déjà riche car vous avez un nombre énorme d’utilisateurs.

Stackoverflow dessert 10 millions d’utilisateurs uniques par mois avec quelques serveurs (environ 6). Pensez au nombre de demandes par jour que vous avez eues si vous générez constamment 10 réponses HTTP par seconde pendant 8 heures chaudes: 10 * 3600 * 8 = 288 000 impressions de pages par jour. Vous n’aurez pas beaucoup d’utilisateurs bientôt.

Et si vous le faites, vous optimisez votre application à 20 requêtes par seconde et au cœur du processeur, ce qui signifie que vous obtenez 80 requêtes par seconde sur un serveur de base. C’est beaucoup .

L’ajout d’un équilibreur de charge ultérieurement est généralement facile. Les LB peuvent marquer chaque utilisateur avec un cookie afin qu’ils soient épinglés sur une cible particulière. Votre application ne remarquera pas la différence. Habituellement.

Est-ce pour un site de commerce électronique? Si oui, alors la vraie question à se poser est “pour chaque heure où le site est en panne, combien d’argent perdez-vous?” Si ce nombre est important, je ferais de l’équilibrage de la charge une priorité.

L’une des décisions d’architecture les plus importantes que j’ai vues concerne l’utilisation des variables de session. Vous devez être en mesure de fournir une expérience transparente si votre utilisateur se retrouve sur différents serveurs lors de sa visite. Les variables de session ne seront pas transférées d’un serveur à un autre, alors j’éviterais de les utiliser.

Je supporte une solution comme celle-ci au travail. Nous avons lancé quatre sites Web de commerce électronique .NET (auparavant constitués de huit) sur trois serveurs Windows 2k8 (soutenus par deux bases de données SQL Server 2008 principales / secondaires), soit environ 1300 commandes (combinées) par jour. Chaque site est équilibré en charge et gardé “dans la ferme” par un donjon vivant. La bonne chose à ce sujet, c’est que nous pouvons prendre un serveur pour la maintenance sans que les utilisateurs ne remarquent vraiment rien. Lorsque nous le rapportons, nous réactivons notre service de réplication et nos modifications sont rapidement transmises aux deux autres serveurs.

Alors oui, je recommanderais de donner une solution comme celle-là à une reflection.

Les parameters qui peuvent affecter les uns les autres et ralentir les performances sont.

  • Bande passante
  • En traitement
  • Synchroniser

Vous devez savoir combien d’utilisateurs vous avez , ainsi que les médias que vous avez gagnés .

Donc, si vous devez diffuser beaucoup de vidéos / fichiers, vous avez besoin de plusieurs serveurs pour les livrer. Disons que vous n’avez pas, quelle est la prochaine pensée qui doit vérifier, les utilisateurs et le traitement.

De mon expérience, ce qui ralentit le traitement est le locking de la session . Une des grandes étapes pour accélérer le traitement consiste à effectuer une gestion complète des sessions personnalisées et votre page ne se bloquera pas les unes les autres et vous pourrez gérer sans problème trop d’utilisateurs.

Maintenant, pour la prochaine étape, disons que vous avez une firebase database qui conserve toutes les données, pour bénéficier d’un équilibre de charge et de nombreux ordinateurs, le problème est de créer un cache local de ce que vous allez montrer.

L’idée est donc d’éviter réellement trop de lockings qui obligent les utilisateurs à attendre les uns les autres, et la deuxième idée est d’avoir un cache local sur chaque ordinateur différent rendu dynamic à partir des données de la firebase database principale.

ref: application Web bloquée lors du traitement d’une autre application Web lors du partage de la même session

Remplacer complètement la session d’ASP.Net

appeler la page aspx pour renvoyer une image au hasard

Toujours en ligne

Un autre paramètre est que vous pouvez créer une solution capable de gérer le cas d’un serveur pour tous, et tous pour un seul 🙂 style, où vous pouvez réellement utiliser plus de serveurs pour des raisons de sauvegarde. Donc, si un serveur se déclenche pour une raison quelconque (par exemple pour la mise à jour et le redémarrage), le rest peut encore fonctionner et servir.

Comme vous l’avez dit, cela dépend si / quand l’équilibrage de charge doit être introduit. Cela dépend des performances et du nombre d’utilisateurs que vous souhaitez servir. LB améliore également la fiabilité de votre application – elle ne s’arrêtera pas lorsqu’un système tombe en panne. Si vous pouvez voir votre projet devenir vraiment grand et servir un grand nombre d’utilisateurs, je me propose de concevoir votre application pour pouvoir la mettre à niveau vers LB. Ne faites donc rien d’exceptionnel. Essayez de vous éloigner des solutions maison et suivez toujours les bonnes pratiques. Si plus tard vous avez vraiment besoin de LB, il ne devrait pas être nécessaire de changer votre application.

METTRE À JOUR

Vous devrez peut-être anticiper, mais pas au prix de compliquer trop votre application. Ne soyez pas paranoïaque et préparez tout pour travailler rapidement, au cas où. Par exemple, ne vous inquiétez pas des sessions – la gestion des sessions peut être facilement déplacée vers SQL Server à tout moment et c’est la voie à suivre avec LB. La mise en cache vous aidera également si vous rencontrez des goulots d’étranglement à l’avenir, mais vous n’avez pas besoin de l’implémenter immédiatement: une bonne conception (interfaces stables), la séparation et le découplage permettront d’append ultérieurement du cache. Donc, encore une fois, respectez les bonnes pratiques, ne fermez pas les portes mais ne les ouvrez pas tout de suite.

Vous pouvez trouver cet article intéressant.