PHP マイクロサービスで分散サービスの検出と登録を実装する方法

WBOY
リリース: 2023-09-25 13:40:02
オリジナル
943 人が閲覧しました

PHP マイクロサービスで分散サービスの検出と登録を実装する方法

PHP マイクロサービスで分散サービスの検出と登録を実装する方法

マイクロサービス アーキテクチャの人気に伴い、ますます多くの企業が従来の単一のモノリシック アプリケーションを統合し始めています。複数の独立した小さなサービスに分割されます。マイクロサービス アーキテクチャでは、サービス間の通信が重要になります。サービス間の呼び出しと管理を容易にするために、サービス間のサービスの検出と登録が必要です。この記事では、PHP マイクロサービスで分散サービスの検出と登録を実装する方法を紹介し、具体的なコード例を示します。

1. 分散サービスの検出と登録とは

分散サービスの検出と登録とは、マイクロサービス アーキテクチャでサービスを自動的に検出して登録するメカニズムを指します。従来のモノリシック アプリケーションでは、構成ファイルまたは集中管理プラットフォームを通じてさまざまなサービスを管理できます。しかし、マイクロサービス アーキテクチャでは、サービスの数が膨大になるため、手動で管理することは現実的ではなくなりました。したがって、サービス検出および登録メカニズムを通じて、さまざまなサービスが開始時に登録センターに自動的に登録できるようにし、他のサービスを呼び出す必要があるときにサービスのアドレスを自動的に検出して取得できるようにします。

2. ETCD を使用して分散サービスの検出と登録を実現する

ETCD は、可用性の高い分散キー/値ストレージ システムです。CoreOS のオープン ソース プロジェクトであり、CoreOS のデフォルト ストレージとなっています。 Kubernetes のリアエンド。 PHP マイクロサービスでは、ETCD を登録センターとして使用して、サービスの検出と登録を実現できます。

  1. ETCD のインストール

ETCD をサーバー側にインストールするのは非常に簡単で、公式 Web サイトから提供されるバイナリ ファイルを通じてインストールできます。インストールが完了したら、コマンド ライン インターフェイスから ETCD サービスを開始できます。

  1. ETCD をサービス登録に使用する

PHP マイクロサービスでは、ETCD の RESTful API をサービス登録に使用できます。以下はサンプル コードです。

<?php

function registerService($serviceName, $serviceHost, $servicePort)
{
    $parameters = [
        'host' => $serviceHost,
        'port' => $servicePort,
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://etcd-server:2379/v2/keys/services/$serviceName");
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    
    curl_exec($ch);
    
    curl_close($ch);
}

registerService('user-service', '127.0.0.1', 8000);
registerService('order-service', '127.0.0.1', 8001);
ログイン後にコピー

上記のコードは、CURL を介して ETCD サービスの API インターフェイスに HTTP POST リクエストを送信し、サービス アドレスとポートを ETCD に登録します。

  1. サービス ディスカバリに ETCD を使用する

他のサービスを呼び出す必要がある場合、サービス ディスカバリに ETCD を使用できます。以下はサンプル コードです。

<?php

function getService($serviceName)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://etcd-server:2379/v2/keys/services/$serviceName");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    
    curl_close($ch);
    
    $data = json_decode($response, true);
    
    return $data['node']['value'];
}

$userServiceUrl = getService('user-service');
$orderServiceUrl = getService('order-service');

echo "User Service URL: $userServiceUrl
";
echo "Order Service URL: $orderServiceUrl
";
ログイン後にコピー

上記のコードは、CURL を介して ETCD サービスの API インターフェイスに HTTP GET リクエストを送信し、サービスのアドレスとポートを取得します。その後、取得した URL を通じて他のサービスを呼び出すことができます。

概要:

ETCD を登録センターとして使用することで、PHP マイクロサービスに分散サービスの検出と登録を実装できます。 ETCD の RESTful API を使用すると、HTTP リクエストを通じて ETCD にサービスを登録できます。また、HTTP リクエストを通じて ETCD から他のサービスのアドレスとポートを取得することもできます。このようなメカニズムを通じて、マイクロサービスの管理と呼び出しを改善し、より柔軟でスケーラブルなマイクロサービス アーキテクチャを実現できます。

上記のコード例は参考用であり、実際のプロジェクトの実際のニーズに応じて調整および改善する必要がある場合があります。

以上がPHP マイクロサービスで分散サービスの検出と登録を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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