Les concepts de ces termes seront expliqués ci-dessous
Si notre projet s'exécute sur une machine, si cette machine tombe en panne Si oui, ou le volume de demandes des utilisateurs est relativement élevé et une seule machine ne peut pas le prendre en charge. Notre site Web peut ne pas être accessible. Alors comment le résoudre ? Nous devons utiliser plusieurs machines et déployer le même programme afin que plusieurs machines puissent exécuter notre site Web en même temps. Alors, comment distribuer les requêtes à toutes nos machines. C’est ainsi qu’est apparu le concept d’équilibrage de charge.
L'équilibrage de charge signifie que, sur la base du proxy inverse, toutes les demandes actuelles peuvent être distribuées à différents serveurs selon l'algorithme de politique spécifié. Nginx, lvs. Mais maintenant, il y a aussi un problème, que dois-je faire s'il y a un problème avec le serveur d'équilibrage de charge ? Toutes les notions de redondance émergent.
La redondance est en fait composée de deux serveurs ou plus, un serveur maître et un serveur esclave. Supposons qu'il y ait un problème avec le serveur d'équilibrage de charge d'un serveur maître et que le serveur esclave puisse remplacer le serveur maître pour continuer l'équilibrage de charge. La façon d'y parvenir est d'utiliser keepalive pour capturer l'hôte virtuel.
Distribué consiste en fait à diviser un grand projet et à l'exécuter de manière indépendante.
Prenons l'exemple ci-dessus. Disons que notre trafic est particulièrement élevé. Nous pouvons le rendre distribué, avec le même mécanisme que CDN. Un cluster identique est construit à trois endroits : Pékin, Hangzhou et Shenzhen. Les utilisateurs proches de Pékin accéderont au cluster à Pékin, et les utilisateurs proches de Shenzhen accéderont au cluster à Shenzhen. De cette façon, notre bataille en ligne est divisée en trois domaines, chacun étant indépendant.
Un autre exemple est notre distribution Redis. La distribution Redis distribue les données dans Redis sur différents serveurs. Chaque serveur stocke un contenu différent, tandis que le cluster MySQL stocke les mêmes données sur chaque serveur. Cela comprend également les concepts de distribution et de clustering.
mysql Le serveur maître écrira le journal des opérations SQL dans le journal bin.log Le serveur esclave lira le journal bin.log du maître, puis exécutera l'instruction SQL. .
Maître et esclave ont les problèmes suivants.
1. Le serveur maître peut écrire et lire, mais l'esclave ne peut qu'écrire.
Les données lues par l'esclave n'ont pas encore été écrites. Comment résoudre ce problème ?
1. Si mis en cache, lisez à partir du cache.
2. Forcer la lecture du maître.
3. Grâce au cluster pxc, n'importe quel nœud est lisible et inscriptible, avec une forte cohérence en lecture et en écriture.
Définissez sticky sur true dans le bloc de configuration mysql config/database.php
sticky est une valeur facultative, qui peut être utilisée pour une lecture immédiate Obtenez les enregistrements qui ont été écrits dans la base de données pendant le cycle de demande en cours. Si l'option sticky est activée et qu'une opération « écriture » a été effectuée pendant le cycle de requête en cours, toutes les opérations de « lecture » utiliseront la connexion « écriture ». Cela garantit que les données écrites dans le même cycle de requête peuvent être lues immédiatement, évitant ainsi le problème d'incohérence des données provoqué par le retard maître-esclave. Cependant, son activation dépend des besoins de l'application.
Laravel nous fournit le package d'extension laravel/envoy, qui fournit un ensemble de syntaxe concise et légère pour définir les tâches quotidiennes des serveurs distants. La syntaxe de style lame peut être utilisée pour configurer des tâches de déploiement, exécuter des commandes Artisan, etc.
composer global require laravel/envoy
Les tâches Envoy doivent toutes être définies dans Envoy.blade.php dans le répertoire racine du projet. Écrivez le contenu
@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2']) @task('deploy', ['on' => ['web-1', 'web-2']]) cd site git pull origin {{ $branch }} composer update php artisan migrate @endtask
La signification du code ci-dessus est que lorsque l'envoy exécutera le déploiement sur la ligne de commande, nous nous connecterons à web-1, web-2 et exécuterons
cd site git pull origin {{ $branch }} php artisan migrate
Bien sûr, cette prémisse est que nous avons joint ssh au serveur distant.
Pour plus d'articles techniques liés à Laravel, veuillez visiter la colonne Tutoriel Laravel pour apprendre !
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!