現在の位置: ホーム> 最新記事一覧> php PHPマイクロサービスアーキテクチャの実践

php PHPマイクロサービスアーキテクチャの実践

M66 2025-06-22

導入

インターネットビジネスの継続的な拡大により、システムの複雑さも増加しています。より高い可用性、保守性、スケーラビリティを達成するために、ますます多くの企業がマイクロサービスアーキテクチャを採用し始めています。このアーキテクチャでは、メッセージキューはサービス間の非同期コミュニケーションの重要なメカニズムになります。この記事では、PHPマイクロサービスアーキテクチャを使用して分散メッセージキューと通信方法を実装する方法を詳細に調べ、RabbitMQ、HTTP、およびRPCと組み合わせて詳細な説明を提供します。

マイクロサービスアーキテクチャの概要

マイクロサービスは、モノリシックアプリケーションを小さなサービスのグループに分割する建築モデルです。各サービスは、特定のビジネス機能を中心に構築されており、独立したデータベース、展開、メンテナンスプロセスがあります。相互作用するために、HTTP、RPC、メッセージキューなどのサービス間で軽量通信メカニズムが使用されます。このアーキテクチャは、システムの柔軟性、障害分離機能、および全体的な応答速度を改善するのに役立ちます。

PHPでの分散メッセージキューの実装

分散環境では、メッセージキューを使用して、リクエストを非同期に処理し、システムのスループットと安定性を改善します。 RabbitMQは現在、広く分散されているメッセージングミドルウェアであり、複数のプロトコルと言語をサポートしており、高い並行性シナリオに適しています。

rabbitmqのインストールと使用

まず、RabbitMQをインストールする必要があります。オペレーティングシステムに基づいて、公式Webサイトでインストール手順を取得できます。インストールが完了した後、基本的な生産者と消費者モデルを次のPHPコードで実装できます。

Rabbitmqプロデューサーと消費者の例

require_once __dir __。 '/vendor/autoload.php';

phpamqplib \ connection \ amqpstreamConnectionを使用します。
phpamqplib \ message \ amqpmessageを使用します。

//プロデューサー$ connection = new amqpstreamConnection( 'localhost'、5672、 'guest'、 'guest');
$ channel = $ connection-> channel();
$ channel-> queue_declare( 'hello'、false、false、false、false);

$ msg = new amqpmessage( 'hello world!');
$ channel-> basic_publish($ msg、 ''、 'hello');

echo "[x]は 'Hello World!' \ n"を送信しました。

$ channel-> close();
$ connection-> close();
// Consumer $ connection = new amqpstreamConnection( 'localhost'、5672、 'guest'、 'guest');
$ channel = $ connection-> channel();
$ channel-> queue_declare( 'hello'、false、false、false、false);

echo "[*]メッセージを扱うっています。ctrl+c \ n"を外るまで。

$ callback = function($ msg){
  echo '[x]受信'、$ msg-> body、 "\ n";
};

$ channel-> basic_consume( 'hello'、 ''、false、true、false、false、$ callback);

while($ channel-> is_consuming()){
  $ channel-> wait();
}

生産者と消費者を運営します

端末で次のコマンドを実行します。

php producer.php
PHP Consumer.php

実行後、プロデューサーはメッセージをキューに送信し、消費者はメッセージを聴いて処理します。このメカニズムは、マルチ消費者の同時処理をサポートし、システムのパフォーマンスを向上させます。

PHPマイクロサービス通信方法

マイクロサービス間の通信は、システム操作の重要なリンクです。以下は、3つの主流通信方法です。

1.サービス通信にはHTTPを使用します

HTTPは、ステートレスリクエストに適した最も一般的なサービス通信プロトコルです。 PHPで一般的に使用されるHTTPクライアントはガズルです。

「ベンダー/autoload.php」が必要です。

guzzlehttp \ clientを使用します。

$ client = new Client();
$ response = $ client-> request( 'get'、 'https://example.com');
echo $ response-> getBody();

2。RPCプロトコルを使用して、効率的な呼び出しを行います

RPC(リモートプロシージャコール)により、ローカル機能などのマイクロサービス間でリモートサービスを呼び出すことができます。 PHPでRPCをサポートするライブラリには、GRPCとThriftが含まれます。

require_once 'vendor/autoload.php';

Helloworld \ HelloreQuestを使用してください。
Helloworld \ GreetRclientを使用します。

$ client = new GreeterClient( 'localhost:50051'、[
  「資格情報」=> grpc \ channelcredentials :: createinsecure()、
]);

$ request = new HelloreQuest();
$ request-> setName( 'world');

$ response = $ client-> sayhello($ request);
echo $ response-> getMessage();

3。メッセージキューとの非同期通信

前の記事では、サービス間の非同期コミュニケーションを実装するためにRabbitMQを使用していることが示されています。この方法には、強力なデカップリング、高い断層トレランス、および良好なスケーラビリティの利点があります。タスクキューイング、ログ、注文処理などのシナリオに適しています。

要約します

PHPを介してマイクロサービスアーキテクチャを構築し、分散メッセージキューと通信メカニズムを統合することは、最新の高性能システムを構築する重要な方法です。 Rabbitmqは、サービス間のゆるい結合通信を実装し、HTTPは定期的なサービスコールに適しており、RPCは低遅延および高周波相互作用に適しています。これらのテクノロジーを組み合わせることで、システムの堅牢性と応答性を大幅に改善できます。