Maison  >  Article  >  développement back-end  >  Distribution et équilibrage de charge du cache de développement PHP

Distribution et équilibrage de charge du cache de développement PHP

王林
王林original
2023-11-07 16:27:321100parcourir

Distribution et équilibrage de charge du cache de développement PHP

Avec le développement continu d'Internet, le nombre de visites de sites Web augmente. Afin d'assurer la disponibilité et les performances du site Web, la mise en cache, la distribution et l'équilibrage de charge sont devenues des technologies essentielles. Dans le développement PHP, comment réaliser la distribution du cache et l'équilibrage de charge est un grand défi. Dans cet article, nous présenterons la mise en cache distribuée basée sur Redis et Memcached et l'équilibrage de charge basé sur Nginx, et fournirons des exemples de code spécifiques pour aider les développeurs PHP à mieux comprendre et appliquer ces technologies.

1. Mise en cache distribuée basée sur Redis et Memcached

Redis et Memcached sont tous deux des systèmes de mise en cache couramment utilisés et prennent tous deux en charge la mise en cache distribuée. Ce qui suit explique comment utiliser Redis et Memcached pour implémenter la mise en cache distribuée.

  1. Redis Distributed Cache

Le cache distribué de Redis est implémenté via un cluster. Il présente principalement les fonctionnalités suivantes :

  • Partage de données. Redis divise les données en plusieurs fragments et les stocke sur plusieurs machines tout en enregistrant différentes paires clé-valeur sur différentes machines.
  • Copie des données. Redis prend en charge le mécanisme de réplication maître-esclave, c'est-à-dire que le nœud maître synchronise les données avec le nœud esclave pour garantir la fiabilité des données.
  • Gestion des nœuds. Le cluster Redis élit un ou plusieurs nœuds pour la gestion via le mécanisme d'élection. Ces nœuds sont appelés « emplacements ».

Ce qui suit est un exemple d'utilisation de Redis pour implémenter la mise en cache distribuée :

1.1 Installez l'extension Redis

Nous devons d'abord installer l'extension Redis. Exécutez la commande suivante sur le système Ubuntu :

$ sudo apt-get install php-redis

Exécutez la commande suivante sur le système CentOS :

$ sudo yum install php-redis

1.2 Créer une connexion Redis

Nous pouvons utiliser le code suivant pour créer une connexion Redis :

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

Ici, nous avons utilisé l'adresse d'hôte par défaut et le numéro de port doit être modifié en fonction de la situation réelle lors de l'utilisation réelle.

1.3 Stocker des données

Nous pouvons utiliser le code suivant pour stocker des données :

$key = 'name';
$value = 'tom';
$redis->set($key, $value);

1.4 Obtenir des données

Nous pouvons utiliser le code suivant pour obtenir des données :

$key = 'name';
$value = $redis->get($key);
  1. Cache distribué Memcached

Le cache distribué de Memcached est-il est implémenté via un cluster composé de plusieurs machines. Il présente principalement les fonctionnalités suivantes :

  • Partage de données. Memcached fragmente les données et stocke chaque fragment sur une machine différente, augmentant ainsi la capacité du cache.
  • Panne du serveur. Si un serveur tombe en panne, Memcached migrera automatiquement les données vers d'autres serveurs pour éviter la perte de données.
  • Gestion des nœuds. Le cluster Memcached est géré via le gestionnaire de nœuds, qui peut effectuer une détection automatique des pannes et un équilibrage de charge sur le serveur de cache, améliorant ainsi la disponibilité du système.

Voici un exemple d'utilisation de Memcached pour implémenter la mise en cache distribuée :

2.1 Installer l'extension Memcached

Nous pouvons utiliser la commande suivante pour installer l'extension Memcached :

$ sudo apt-get install php-memcached

ou

$ sudo yum install php-memcached

2.2 Créer une connexion Memcached

Nous Vous pouvez utiliser le code suivant pour créer une connexion Memcached :

$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);

Ici, nous utilisons l'adresse d'hôte et le numéro de port par défaut, qui doivent être modifiés en fonction de la situation réelle d'utilisation réelle.

2.3 Stocker des données

Nous pouvons utiliser le code suivant pour stocker des données :

$key = 'name';
$value = 'tom';
$memcached->set($key, $value);

2.4 Obtenir des données

Nous pouvons utiliser le code suivant pour obtenir des données :

$key = 'name';
$value = $memcached->get($key);

2. L'équilibrage de charge basé sur Nginx

Nginx est un. Serveur HTTP et proxy inverse hautes performances, il prend en charge plusieurs algorithmes d'équilibrage de charge, tels que le round robin, le round robin pondéré, le hachage IP, etc. Ce qui suit présentera comment utiliser Nginx pour implémenter l'équilibrage de charge et fournira des exemples de code spécifiques.

  1. Installer Nginx

Nous pouvons installer Nginx en utilisant la commande suivante :

Exécutez la commande suivante dans le système Ubuntu :

$ sudo apt-get install nginx

Exécutez la commande suivante dans le système CentOS :

$ sudo yum install nginx
  1. Configurez Nginx

Le L'étape suivante consiste à configurer la configuration de Nginx Nginx. Nous devons modifier le fichier de configuration Nginx, généralement situé dans /etc/nginx/nginx.conf :

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
    multi_accept on;
}

http {
    upstream backend {
        server 192.168.1.1:8080; # 服务器1
        server 192.168.1.2:8080; # 服务器2
        server 192.168.1.3:8080; # 服务器3
    }

    server {
        listen 80 default_server;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

Le fichier de configuration ci-dessus spécifie trois serveurs et des requêtes HTTP proxy vers l'un de ces trois serveurs. où backend est le nom du serveur proxy et peut être modifié si nécessaire.

  1. Démarrez Nginx

Nous pouvons utiliser la commande suivante pour démarrer Nginx :

Exécutez la commande suivante dans le système Ubuntu :

$ sudo systemctl start nginx

Exécutez la commande suivante dans le système CentOS :

$ sudo systemctl start nginx
  1. Test

Utilisez le navigateur pour accédez à http://localhost, si vous voyez une page normale, cela signifie que l'équilibrage de charge a été démarré.

Conclusion

Cet article explique comment utiliser Redis et Memcached pour implémenter la mise en cache distribuée et comment utiliser Nginx pour implémenter l'équilibrage de charge, et fournit des exemples de code spécifiques. Nous pouvons choisir des technologies et des algorithmes appropriés en fonction des besoins réels pour améliorer les performances et la disponibilité du système.

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:
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