Table des matières
Cluster
Équilibrage de charge
Redondance
Distribué
mysql maître-esclave
Comment Laravel résout les incohérences des données
Et si notre code est synchronisé sur plusieurs serveurs ?
Maison cadre php Laravel Équilibrage de charge, distribution, compréhension des clusters, comment synchroniser plusieurs codes serveur

Équilibrage de charge, distribution, compréhension des clusters, comment synchroniser plusieurs codes serveur

Jul 03, 2019 pm 02:42 PM
distribué Équilibrage de charge

Équilibrage de charge, distribution, compréhension des clusters, comment synchroniser plusieurs codes serveur

Les concepts de ces termes seront expliqués ci-dessous

Cluster

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.

É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.

Redondance

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é

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 maître-esclave

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.

Comment Laravel résout les incohérences des données

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.

Et si notre code est synchronisé sur plusieurs serveurs ?

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!

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Sujets chauds

Comment optimiser les performances TCP/IP et les performances réseau des systèmes Linux Comment optimiser les performances TCP/IP et les performances réseau des systèmes Linux Nov 07, 2023 am 11:15 AM

Dans le domaine des ordinateurs modernes, le protocole TCP/IP constitue la base de la communication réseau. En tant que système d'exploitation open source, Linux est devenu le système d'exploitation préféré utilisé par de nombreuses entreprises et organisations. Cependant, à mesure que les applications et services réseau deviennent des composants de plus en plus critiques pour les entreprises, les administrateurs doivent souvent optimiser les performances du réseau pour garantir un transfert de données rapide et fiable. Cet article explique comment améliorer la vitesse de transmission réseau des systèmes Linux en optimisant les performances TCP/IP et les performances réseau des systèmes Linux. Cet article discutera d'un

Comment utiliser Workerman pour créer un système d'équilibrage de charge à haute disponibilité Comment utiliser Workerman pour créer un système d'équilibrage de charge à haute disponibilité Nov 07, 2023 pm 01:16 PM

Comment utiliser Workerman pour créer un système d'équilibrage de charge à haute disponibilité nécessite des exemples de code spécifiques. Dans le domaine de la technologie moderne, avec le développement rapide d'Internet, de plus en plus de sites Web et d'applications doivent gérer un grand nombre de requêtes simultanées. Afin d’atteindre une haute disponibilité et des performances élevées, le système d’équilibrage de charge est devenu l’un des composants essentiels. Cet article explique comment utiliser le framework open source PHP Workerman pour créer un système d'équilibrage de charge à haute disponibilité et fournit des exemples de code spécifiques. 1. Introduction à Workerman Worke

Application de la stratégie d'équilibrage de charge dans l'optimisation des performances du framework Java Application de la stratégie d'équilibrage de charge dans l'optimisation des performances du framework Java May 31, 2024 pm 08:02 PM

Les stratégies d'équilibrage de charge sont cruciales dans les frameworks Java pour une distribution efficace des requêtes. En fonction de la situation de concurrence, différentes stratégies ont des performances différentes : Méthode d'interrogation : performances stables sous une faible concurrence. Méthode d'interrogation pondérée : les performances sont similaires à la méthode d'interrogation sous faible concurrence. Méthode du moindre nombre de connexions : meilleures performances sous une concurrence élevée. Méthode aléatoire : simple mais peu performante. Hachage cohérent : équilibrage de la charge du serveur. Combiné à des cas pratiques, cet article explique comment choisir des stratégies appropriées basées sur les données de performances pour améliorer significativement les performances des applications.

Comment utiliser Redis pour réaliser une synchronisation distribuée des données Comment utiliser Redis pour réaliser une synchronisation distribuée des données Nov 07, 2023 pm 03:55 PM

Comment utiliser Redis pour réaliser une synchronisation de données distribuées Avec le développement de la technologie Internet et des scénarios d'application de plus en plus complexes, le concept de systèmes distribués est de plus en plus largement adopté. Dans les systèmes distribués, la synchronisation des données est un problème important. En tant que base de données en mémoire hautes performances, Redis peut non seulement être utilisé pour stocker des données, mais peut également être utilisé pour réaliser une synchronisation distribuée des données. Pour la synchronisation distribuée des données, il existe généralement deux modes courants : le mode publication/abonnement (Publish/Subscribe) et la réplication maître-esclave (Master-slave).

Comment Redis implémente la gestion distribuée des sessions Comment Redis implémente la gestion distribuée des sessions Nov 07, 2023 am 11:10 AM

La façon dont Redis implémente la gestion de session distribuée nécessite des exemples de code spécifiques. La gestion de session distribuée est aujourd'hui l'un des sujets brûlants sur Internet. Face à une concurrence élevée et à de gros volumes de données, les méthodes traditionnelles de gestion de session deviennent progressivement inadéquates. En tant que base de données clé-valeur hautes performances, Redis fournit une solution de gestion de session distribuée. Cet article expliquera comment utiliser Redis pour implémenter la gestion de session distribuée et donnera des exemples de code spécifiques. 1. Introduction à Redis en tant que stockage de session distribué La méthode traditionnelle de gestion de session consiste à stocker les informations de session.

Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Nov 07, 2023 am 11:04 AM

Comment utiliser Swoole pour implémenter la planification distribuée des tâches planifiées Introduction : Dans le développement PHP traditionnel, nous utilisons souvent cron pour implémenter la planification des tâches planifiées, mais cron ne peut exécuter des tâches que sur un seul serveur et ne peut pas faire face aux scénarios de concurrence élevée. Swoole est un framework de concurrence asynchrone hautes performances basé sur PHP. Il fournit des capacités de communication réseau complètes et une prise en charge multi-processus, nous permettant de mettre en œuvre facilement une planification distribuée des tâches planifiées. Cet article explique comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées.

Utiliser Redis pour obtenir la cohérence du cache distribué Utiliser Redis pour obtenir la cohérence du cache distribué Nov 07, 2023 pm 12:05 PM

Utiliser Redis pour assurer la cohérence du cache distribué Dans les systèmes distribués modernes, le cache joue un rôle très important. Cela peut réduire considérablement la fréquence d’accès du système à la base de données et améliorer les performances et le débit du système. Dans un système distribué, afin de garantir la cohérence du cache, nous devons résoudre le problème de la synchronisation des données entre plusieurs nœuds. Dans cet article, nous présenterons comment utiliser Redis pour obtenir la cohérence du cache distribué et donnerons des exemples de code spécifiques. Redis est une base de données clé-valeur hautes performances qui prend en charge la persistance, la réplication et la collecte

Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Nov 02, 2023 am 09:39 AM

MongoDB est une base de données NoSQL open source offrant des performances, une évolutivité et une flexibilité élevées. Dans les systèmes distribués, la planification et l'exécution des tâches sont un problème clé. En utilisant les caractéristiques de MongoDB, des solutions de planification et d'exécution des tâches distribuées peuvent être réalisées. 1. Analyse des exigences pour la planification distribuée des tâches Dans un système distribué, la planification des tâches est le processus d'attribution de tâches à différents nœuds pour exécution. Les exigences courantes en matière de planification des tâches incluent : 1. Distribution des demandes de tâches : envoyer les demandes de tâches aux nœuds d'exécution disponibles.

See all articles