ホームページ > バックエンド開発 > PHPチュートリアル > PHP 開発キャッシュの分散と負荷分散

PHP 開発キャッシュの分散と負荷分散

王林
リリース: 2023-11-07 16:28:02
オリジナル
1120 人が閲覧しました

PHP 開発キャッシュの分散と負荷分散

インターネットの継続的な発展に伴い、Web サイトのアクセス数は増加しており、Web サイトの可用性とパフォーマンスを確保するために、キャッシュ、分散、負荷分散は必須のテクノロジーとなっています。 . . PHP 開発では、キャッシュの分散と負荷分散をどのように実現するかが大きな課題です。この記事では、Redis および Memcached に基づく分散キャッシュと Nginx に基づく負荷分散を紹介し、PHP 開発者がこれらのテクノロジーをより深く理解し、適用できるようにする具体的なコード例を示します。

1. Redis と Memcached に基づく分散キャッシュ

Redis と Memcached はどちらも一般的に使用されるキャッシュ システムであり、両方とも分散キャッシュをサポートしています。ここでは、Redis と Memcached を使用して分散キャッシュを実装する方法を紹介します。

  1. Redis 分散キャッシュ

Redis 分散キャッシュはクラスターを通じて実装されており、主に次の特徴があります:

  • データ分析部分。 Redis はデータを複数のフラグメントに分割し、それらを複数のマシンに保存しながら、異なるキーと値のペアを異なるマシンに保存します。
  • データのレプリケーション。 Redis はマスター/スレーブ レプリケーション メカニズムをサポートしています。つまり、マスター ノードがデータをスレーブ ノードに同期して、データの信頼性を確保します。
  • ノード管理。 Redis クラスターは、選出メカニズムを通じて管理対象の 1 つ以上のノードを選出します。これらのノードは「スロット」と呼ばれます。

次に、Redis を使用して分散キャッシュを実装する例を示します。

1.1 Redis 拡張機能のインストール

最初に、Redis 拡張機能をインストールする必要があります。 Ubuntu システムで次のコマンドを実行します。

$ sudo apt-get install php-redis
ログイン後にコピー

CentOS システムで次のコマンドを実行します。

$ sudo yum install php-redis
ログイン後にコピー

1.2 Redis 接続を作成します

次のコードを使用して、 Redis 接続を作成します:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
ログイン後にコピー

ここではデフォルトのホスト アドレスとポート番号を使用しますが、実際の使用状況に応じて変更する必要があります。

1.3 データの保存

次のコードを使用してデータを保存できます:

$key = 'name';
$value = 'tom';
$redis->set($key, $value);
ログイン後にコピー

1.4 データの取得

次のコードを使用してデータを取得できます:

$key = 'name';
$value = $redis->get($key);
ログイン後にコピー
  1. Memcached 分散キャッシュ

Memcached の分散キャッシュは、複数のマシンで構成されるクラスターを通じて実装されており、主に次の特徴があります:

  • データの断片化。 Memcached はデータをフラグメント化し、各フラグメントを別のマシンに保存することで、キャッシュ容量を増やします。
  • サーバー障害。サーバーに障害が発生した場合、Memcached はデータの損失を避けるためにデータを他のサーバーに自動的に移行します。
  • ノード管理。 Memcached クラスターはノード マネージャーを通じて管理され、キャッシュ サーバー上で自動障害検出と負荷分散を実行できるため、システムの可用性が向上します。

次に、Memcached を使用して分散キャッシュを実装する例を示します。

2.1 Memcached 拡張機能のインストール

次のコマンドを使用して、Memcached 拡張機能をインストールできます。

$ sudo apt-get install php-memcached
ログイン後にコピー

or

$ sudo yum install php-memcached
ログイン後にコピー

2.2 Memcached 接続の作成

次のコードを使用して Memcached 接続を作成できます:

$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
ログイン後にコピー

ここではデフォルトのホストを使用します。アドレスとポート番号は、実際の使用時に状況に応じて変更する必要があります。

2.3 データの保存

次のコードを使用してデータを保存できます:

$key = 'name';
$value = 'tom';
$memcached->set($key, $value);
ログイン後にコピー

2.4 データの取得

次のコードを使用してデータを取得できます:

$key = 'name';
$value = $memcached->get($key);
ログイン後にコピー

2. Nginx

に基づく負荷分散 Nginx は、高性能 HTTP およびリバース プロキシ サーバーであり、ポーリング、加重ポーリング、および負荷分散アルゴリズムなどのさまざまな負荷分散アルゴリズムをサポートしています。 IP の値切り交渉、Xi ら。以下では、Nginx を使用して負荷分散を実装する方法と、具体的なコード例を紹介します。

  1. Nginx のインストール

次のコマンドを使用して Nginx をインストールできます:

Ubuntu システムで次のコマンドを実行します:

$ sudo apt-get install nginx
ログイン後にコピー

CentOS システムで次のコマンドを実行します。

$ sudo yum install nginx
ログイン後にコピー
  1. Configure Nginx

次に、Nginx を構成する必要があります。 Nginx 構成ファイル (通常は /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;
        }
    }
}
ログイン後にコピー

上記の構成ファイルは 3 つのサーバーを指定し、これら 3 つのサーバーのいずれかに HTTP リクエストをプロキシします。ここで、backend はプロキシ サーバーの名前であり、必要に応じて変更できます。

  1. Nginx の起動

次のコマンドを使用して Nginx を起動できます:

Ubuntu システムで次のコマンドを実行します:

$ sudo systemctl start nginx
ログイン後にコピー
ログイン後にコピー

CentOS システムで次のコマンドを実行します:

$ sudo systemctl start nginx
ログイン後にコピー
ログイン後にコピー
  1. Test

ブラウザを使用して http://localhost にアクセスします。通常のページが表示される場合は、負荷分散が開始されたことを意味します。

結論

この記事では、Redis と Memcached を使用して分散キャッシュを実装する方法と、Nginx を使用して負荷分散を実装する方法を紹介し、具体的なコード例を示します。実際のニーズに基づいて適切なテクノロジーとアルゴリズムを選択し、システムのパフォーマンスと可用性を向上させることができます。

以上がPHP 開発キャッシュの分散と負荷分散の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート