現代のインターネット アプリケーション開発では、開発効率とシステムの拡張性を向上させるため、マイクロサービス アーキテクチャが中核モデルとなっています。モノリシック アプリケーションを独立して展開される小さなサービスに分割することで、開発者はシステムをより柔軟に管理および拡張できます。この記事では、PHP を使用して分散サービス ガバナンスと呼び出しを実装する方法を紹介し、実用的なサンプル コードを提供します。
分散システムには多数のマイクロサービスが存在するため、サービス情報を均一に管理するにはサービスの検出と登録のメカニズムが必要です。 Consul は、サービス登録、ヘルス チェック、負荷分散、その他の機能を提供するオープン ソースの分散型サービス検出および構成ツールです。
まず Consul をインストールして起動し、各マイクロサービスにサービス情報を登録します。
GuzzleHttpClient を使用します。 //HTTP クライアントを作成 $client = new Client(); //マイクロサービスを Consul に登録します $response = $client->put('http://localhost:8500/v1/agent/service/register', [ 'json' => [ 'ID' => '私のサービス'、 「名前」 => 「私のサービス」、 'アドレス' => 'ローカルホスト', 「ポート」 => 8080、 'タグ' => ['php', 'マイクロサービス'] 】 ]); if ($response->getStatusCode() === 200) { echo 'サービス登録が成功しました'; } それ以外 { echo 'サービス登録に失敗しました'; }
上記のコードは、「My Service」という名前のマイクロサービスを Consul に登録し、アドレスとポートを指定して、管理と呼び出しを容易にするためのラベルを追加します。
負荷分散により、リクエストをさまざまなマイクロサービス インスタンスに分散して、システムのパフォーマンスと可用性を向上させることができます。 PHP 環境では、Nginx を負荷分散サーバーとして使用し、リバース プロキシ経由でリクエストを転送できます。
http { アップストリーム my_service { サーバーローカルホスト:8080; サーバーローカルホスト:8081; サーバーローカルホスト:8082; } サーバー { 80を匂いいてください。 場所 /my-service { proxy_pass http://my_service; } } }
上記の構成では、「my_service」という名前のバックエンドを定義します。これは、基本的な負荷分散を実現するために、さまざまなポート上のマイクロサービス インスタンスにリクエストを分散します。
マイクロサービス間の呼び出しは、分散システムにおける重要なリンクです。 PHP は、HTTP リクエストまたは RPC フレームワークを通じてサービス間通信を実装できます。次の例では、Guzzle クライアントを使用して HTTP 呼び出しを行います。
GuzzleHttpClient を使用します。 GuzzleHttpExceptionRequestException を使用します。 //HTTP クライアントを作成 $client = new Client(); // マイクロサービス電話び外しを試すしてください { $response = $client->get('http://localhost/my-service/api'); $data = json_decode($response->getBody(), true); // マイクロサービスから戻るされたデータを処理します // ... } catch(RequestException $例外) { // 例外処理 // ... }
この例では、「My Service」の /api インターフェイスが呼び出され、返されたデータはビジネス ロジックに従ってさらに処理できます。実際のプロジェクトでは、フレームワークや要件に基づいて適切な呼び出し方法を選択できます。
この記事では、Consul サービスの登録、Nginx ロード バランシング、Guzzle サービスの呼び出しなど、PHP を使用してマイクロサービス アーキテクチャを実装するコア テクノロジを紹介します。これらのテクノロジーにより、可用性が高く、拡張が容易な分散システムを構築できます。実際のアプリケーションでは、サービスの健全性チェック、フォールト トレランス処理、ログの監視など、システムの安定性を高めるための対策も考慮する必要があります。
上記の内容は、PHP マイクロサービスの分散サービス ガバナンスと呼び出しに関する完全な実用的なガイドであり、開発者の参照とアプリケーションに適しています。