Maison développement back-end tutoriel php Un guide pour l'équilibrage de charge avec PHP

Un guide pour l'équilibrage de charge avec PHP

Dec 04, 2019 am 11:34 AM
php

Dans le passé, exécuter une grande application Web signifiait exécuter un grand serveur Web. Parce que votre application attire un grand nombre d’utilisateurs, vous devrez ajouter plus de mémoire et de processeurs à votre serveur. Aujourd'hui, le modèle du « gros serveur » a disparu, remplacé par un grand nombre de petits serveurs utilisant diverses techniques d'équilibrage de charge.

Les avantages de « plus de petits serveurs » par rapport au modèle précédent de « grands serveurs » se reflètent sous deux aspects :

 1. Si le serveur tombe en panne, le système d'équilibrage de charge cessera de demander jusqu'à ce que il tombe en panne, puis distribue la charge aux autres serveurs qui fonctionnent normalement.

 2. La mise à l'échelle de votre serveur est plus facile. Tout ce que vous avez à faire est d'ajouter de nouveaux serveurs au système d'équilibrage de charge. Pas besoin d'interrompre votre candidature.

Alors, saisissez cette opportunité. Le compromis, bien sûr, est que cela nécessite un peu plus de complexité dans le développement de votre application. C’est ce que cet article va couvrir.

À ce stade, vous vous dites peut-être : "Mais comment puis-je savoir que j'utilise l'équilibrage de charge ?". La réponse la plus honnête, si vous posez cette question, est que vous n'utilisez probablement pas de système d'équilibrage de charge et que votre système n'a pas besoin d'en tenir compte. Dans la plupart des cas, lorsque l’application devient suffisamment volumineuse, l’équilibrage de charge doit être explicitement proposé et mis en place. Cependant, je vois parfois des sociétés d'hébergement Web effectuer cet équilibrage de charge pour les applications client, ou le faire elles-mêmes, comme décrit ci-dessous.

Notez que je continue de mentionner les « applications Web » au lieu des sites Web. Ceci permet de distinguer les « applications Web » des sites complexes qui impliquent souvent une programmation côté serveur et des bases de données, plutôt que des sites Web qui affichent uniquement du contenu statique simple. .

1. Fichier PHP

La première question est, si vous avez un grand nombre de petits serveurs, comment télécharger vos fichiers php sur tous les serveurs. Il existe les méthodes suivantes pour vous Référence ? :

 ◆ Téléchargez tous les fichiers sur chaque serveur séparément. Le problème avec cette méthode est le suivant : imaginez que vous avez 20 serveurs, cela entraînera facilement des erreurs pendant le processus de téléchargement, et lors de la mise à jour, il est très probable que il y aura différentes versions des fichiers sur différents serveurs.

 ◆Utilisez 'rsync' (ou un logiciel similaire). Un tel outil peut synchroniser des fichiers sur un répertoire local et des répertoires sur plusieurs hôtes distants.

 ◆Utiliser un logiciel de contrôle de version (tel que Subversion) C'est ma méthode préférée. Cela me permet de très bien maintenir mon code, et lorsque je publie mon application, je peux exécuter la commande svn update sur chaque serveur pour la synchroniser. Cette approche facilite également le basculement des serveurs vers une version précédente du code.

 ◆Utilisez un serveur de fichiers (vous constaterez peut-être que NFS est très approprié pour cela). Cette méthode consiste à utiliser un serveur de fichiers pour stocker votre application Web. Bien sûr, si votre serveur de fichiers tombe en panne, alors Tout. vos sites seront indisponibles. À ce stade, vous devrez dépenser plus d’argent pour le restaurer.

La méthode que vous choisissez dépend de vos besoins et de vos compétences. Si vous utilisez un système de contrôle de version, vous souhaiterez peut-être planifier un moyen de mettre à jour le code sur tous les serveurs en exécutant une commande de mise à jour en même temps. Cependant, si vous utilisez un serveur de fichiers, vous devrez mettre en œuvre un mécanisme de récupération après échec pour éviter les échecs de requête en cas de panne du serveur.

  2. Téléchargement de fichiers

Lorsqu'il n'y a qu'un seul serveur, le téléchargement de fichiers n'est pas un problème. Mais lorsque nous avons plusieurs serveurs, comment les fichiers téléchargés doivent-ils être stockés ? Le problème du téléchargement de fichiers est similaire à celui du stockage de fichiers PHP entre serveurs. Voici plusieurs solutions possibles :

 ◆ Stocker le fichier dans la base de données. La plupart des données permettent de stocker des données binaires. Lorsque vous demandez un téléchargement de fichier, Access Data envoie les données binaires ainsi que le nom et le type de fichier correspondants à l'utilisateur. Vous devez réfléchir à la manière dont la base de données stockera vos fichiers avant d'utiliser cette solution. Le problème avec cette approche est que si le serveur de base de données tombe en panne, les fichiers seront indisponibles.

 ◆ Stockez les fichiers téléchargés sur un serveur de fichiers. Comme dans l'introduction précédente, vous devez installer un serveur de fichiers qui sera partagé par tous les serveurs Web. Après le téléchargement, tous les serveurs Web peuvent être téléchargés. utilisez-le. Cependant, si le serveur de fichiers est en panne, des interruptions du téléchargement des fichiers image peuvent survenir.

 ◆ Concevez votre propre mécanisme de téléchargement pour transférer des fichiers vers chaque serveur. Cette méthode n'a pas les inconvénients d'un serveur de fichiers unique ou d'une solution de base de données, mais augmentera la complexité de votre code. Par exemple, si le serveur tombe en panne lors du téléchargement sur plusieurs serveurs, comment y faire face ?

Utiliser une base de données pour stocker les fichiers téléchargés mais concevoir un mécanisme de mise en cache des fichiers est une bonne solution. Lorsque le serveur reçoit une demande de téléchargement de fichier, il vérifie d'abord si le fichier existe dans le système de cache, s'il le trouve, il le télécharge depuis le système de cache. Sinon, il le lit dans la base de données et le met en cache dans le système de fichiers.

 3. Séances

Si vous êtes familier avec le traitement de session PHP, vous savez probablement que par défaut, il stocke les données de session dans des fichiers temporaires sur le serveur. De plus, ce fichier se trouve uniquement sur le serveur sur lequel vous l'avez demandé, mais les requêtes ultérieures pourront être traitées par un autre serveur, ce qui générera une nouvelle session sur l'autre serveur. Cela fait que les sessions ne sont souvent pas reconnues, par exemple, les utilisateurs connectés sont toujours invités à se reconnecter.

Ma solution recommandée consiste soit à rétablir le mécanisme de traitement de session intégré à PHP pour stocker les données de session dans la base de données, soit à implémenter votre propre mécanisme pour garantir que la demande d'un utilisateur est envoyée au même serveur.

4. Configuration

Bien que ce sujet ne soit pas particulièrement lié au PHP, il me semble quand même nécessaire de le mentionner. Lors de l'exécution de serveurs en cluster, il est judicieux de disposer d'un moyen de synchroniser les fichiers de configuration entre les serveurs. Si les fichiers de configuration sont incohérents, cela peut entraîner un comportement intermittent très étrange qui peut être difficile à dépanner.

Je recommande d'utiliser un système de contrôle de version pour les gérer individuellement. De cette façon, vous pouvez stocker différents fichiers de configuration PHP pour différentes installations de projet et également synchroniser tous les fichiers de configuration du serveur.

 5. Logging

Comme les problèmes de configuration, la journalisation n'est pas uniquement liée à PHP. Mais il est toujours très important de maintenir le bon fonctionnement de votre serveur. Sans un système de journalisation approprié, comment savoir si votre code PHP commence à générer des erreurs (vous désactivez toujours le paramètre display_errors lorsque le système est en cours d'exécution, n'est-ce pas ?)

Il existe plusieurs façons de le faire implémenter la journalisation :

 1. Enregistrez les journaux sur chaque serveur. C'est le moyen le plus simple. Chaque machine n'enregistre qu'un seul fichier. L'avantage est qu'il est simple et peut nécessiter très peu de configuration. Cependant, à mesure que le nombre de serveurs augmente, la surveillance des fichiers journaux sur chaque serveur devient très difficile.

2. Se connecter à un partage Cette méthode a toujours les fichiers journaux sur chaque serveur, mais ils sont stockés sur un serveur de fichiers central via le mécanisme de partage, ce qui facilitera la surveillance des journaux. Le problème avec cette solution est que si le serveur de fichiers n'est pas disponible, un simple problème d'écriture de journal finira par provoquer le crash de l'ensemble de l'application.

 3. Enregistrez les journaux sur le serveur de journalisation Vous pouvez utiliser un logiciel de journalisation, tel que syslog, pour écrire tous les journaux sur un serveur central. Bien que cette méthode nécessite davantage de configuration, elle constitue également la solution la plus robuste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles