検索
ホームページバックエンド開発PHPの問題PHPでマイクロサービスを構築する方法

PHPでマイクロサービスを構築する方法

Hyperf (推奨学習: PHP ビデオ チュートリアル )

Java 開発者にとって、このテクノロジーは非常に成熟しています。多数のマイクロサービス フレームワークから選択可能:

[Dubbo](https://dubbo.apache.org/zh-cn/)
[Spring Cloud](https://www.springcloud.cc/)

PHPer として、Google で「PHP マイクロサービス」をチェックしたところ、有用な関連コンテンツがほとんどなく、実質的な参考価値がないことがわかりました。

幸いなことに、マスターは Swoole 拡張機能に基づいた高性能で柔軟性の高い PHP コルーチン フレームワーク [Hyperf](https://www.hyperf.io/) を実装し、関連コンポーネントを提供しています。マイクロサービスアーキテクチャの。

Hyperf は、「Swoole 4.3」をベースにした高性能かつ柔軟性の高い PHP コルーチン フレームワークです。組み込みのコルーチン サーバーと、一般的に使用されるコンポーネントが多数含まれています。そのパフォーマンスは、従来の `PHP-FPM` ベースのフレームワークです。フレームワークは質的に改善されており、非常に柔軟な拡張性を維持しながら超高性能を提供します。標準コンポーネントは [PSR 標準](https://www.php-fig. org/psr)、強力な依存関係注入設計に基づいており、ほとんどのコンポーネントまたはクラスが「置換可能」かつ「再利用可能」であることが保証されています。

そこで、マイクロサービス アーキテクチャに関する基本的な知識を学んだ後、Hyperf フレームワークを使用して PHP ベースのマイクロサービス クラスターを構築しました。これはプロジェクトのソース コード アドレスです:

https://github.com/Jochen-z/php-microservice-demo

このプロジェクトは Dokcer を使用して構築されています。`docker-compose.yml` のコードは次のとおりです:

version:"3"
services:
consul-server- leader:
image:consul:latest
container_name:consul-server-leader
command:"agent -server -bootstrap -ui -node=consul-server-leader -client=0.0.0.0"
environment:
- CONSUL_BIND_INTERFACE=eth 0
ports:
- "8500:8500"
networks:
- microservice
microservice- 1:
build:
context:.
container_name:"microservice-1"
command:"php bin/hyperf.php start"
depends_on:
- "consul-server-leader"
volumes:
- ./www/microservice- 1:/var/www
networks:
- microservice
tty:true
microservice- 2:
build:
context:.
container_name:"microservice-2"
command:"php bin/hyperf.php start"
depends_on:
- "consul-server-leader"
volumes:
- ./www/microservice- 2:/var/www
networks:
- microservice
tty:true
app:
build:
context:.
container_name:"app"
command:"php bin/hyperf.php start"
depends_on:
- "microservice-1"
volumes:
- ./www/ web:/var/www
ports:
- "9501:9501"
networks:
- microservice
tty:true
networks:
microservice:
driver:bridge
volumes:
microservice:
driver:local

ここで Consul コンテナー `consul-server-leader` が開始されますサービス登録およびサービスとして 検出されたコンポーネント、コンテナー「microservice-1」および「microservice-2」は、それぞれ加算操作と除算操作のサービスを提供します。

コンテナ `app` はサービス呼び出し元として、`consul-server-leader` コンテナの URL を設定し、`consul-server-leader` コンテナにアクセスして `microservice-1` および `microservice-2` サービスを取得します。 server-leader` の IP アドレスとポート、そして `app` は RPC プロトコルを通じて加算サービスと除算サービスを呼び出し、結果を取得してユーザーに返します。

「app」コンテナは、Hyperf プロジェクトをデプロイし、外部に HTTP サービスを提供する Web アプリケーションです。

たとえば、`AppControllerIndexController` コントローラーには `add` メソッドがあります。

publicfunctionadd(AdditionService $addition)
{
$a = (int) $this->request->input( 'a', 1); # 接受前端用户参数
$b = (int) $this->request->input( 'b', 2);
return[
'a'=> $a,
'b'=> $b,
'add'=> $addition->add($a, $b) # RPC调用
];
}
在 `AppJsonRpcAdditionService` 中 `add` 的实现:
classAdditionServiceextendsAbstractServiceClient
{
/**
* 定义对应服务提供者的服务名称
* @varstring
*/
protected$serviceName = 'AdditionService';
/**
* 定义对应服务提供者的服务协议
* @varstring
*/
protected$protocol = 'jsonrpc-http';
publicfunctionadd(int $a, int $b): int
{
return$this->__request( __FUNCTION__, compact( 'a', 'b'));
}
}

`AbstractServiceClient` を継承してマイクロサービス クライアント リクエスト クラスを作成します。Hyperf はこれを支援します。 Consul およびサービス プロバイダーとの対話の詳細を最下位レベルで実装します。必要なのは、`microservice-1` および `microservice-2` によって提供されるサービスをリモートで呼び出すための `AdditionService` クラスの `add` メソッドだけです。

これで、PHP マイクロサービス クラスターの構築が完了しました。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい