PHP マイクロサービス フレームワークは、Swoole に基づいて Camera360 コミュニティ サーバー チームによって独自に開発された最新の PHP コルーチン サービス フレームワークであり、Swoole のエンジニアリング レベルです。エンタープライズ アプリケーション フレームワークに準拠しており、数億人のユーザーに対する Camera360 の高い同時実行性と大規模なトラフィックのテストに耐えました。 php-msf は Camera360 サーバー チームによって主導されており、継続的に更新および保守されます。また、より優秀な Swoole アプリケーション開発者が参加することも期待しています。 php-msf の中心となる設計アイデアは、コルーチン、非同期、並列処理の革新的な技術手段を使用して、システムの単一マシンのスループット能力を向上させ、サーバー全体のコストを削減することです。
フレームワーク マニュアル (Gitbook): PHP-MSF 開発マニュアル
APIドキュメント(Rawgit):クラスドキュメント
サンプル デモ プロジェクト: PHP-MSF デモ
ドキュメントの改善にご協力ください: https://github.com/pinguo/php-msf-docs、PR を送信してください。
PHP-MSF#1 グループ (QQ): 614054288
$ > php -r " copy('https://raw.githubusercontent.com/pinguo/php-msf-docker/master/installer.php', 'installer.php');include('installer.php'); " && source ~ /.bashrc
installer.php
実行環境をチェックし、カスタム構成に基づいてプロジェクト テンプレートを自動的に作成し、composer で依存関係をインストールし、サービスを開始します。 cdn.rawgit.com
にアクセスできない場合は、php-msf-docker を直接複製またはダウンロードし、 installer.php
抽出して、 php installer.php
直接実行できます。
すべてがうまくいけば、実行の最後に次の出力が表示されます。
[2017-09-06 16:08:34] Run composer install success
[2017-09-06 16:08:34] Congratulations, all are installed successfully !
[2017-09-06 16:08:34] You can, visit http://127.0.0.1:8990/Welcome for test
_______ ____
________ / /_ ____ ____ ___ _____/ __/
___/ __ / __ / __ _ _____/ __ ` __ / ___/ /_
__/ /_/ / / / / /_/ /_____/ / / / / (__ ) __/
_/ .___/_/ /_/ .___/ /_/ /_/ /_/____/_/
/_/ /_/ Camera360 Open Source TM
[2017-09-06 16:08:34] Swoole Version: 1.9.18
[2017-09-06 16:08:34] PHP Version: 7.1.8
[2017-09-06 16:08:34] Application ENV: docker
[2017-09-06 16:08:34] Listen Addr: 0.0.0.0
[2017-09-06 16:08:34] Listen Port: 8990
アクセステスト:
$ > curl http://127.0.0.1:8990/Welcome
hello world !
ポートが 8990 でない場合は、ポートを変更してからテストにアクセスする必要があります。
├── app // PHP业务代码
│ ├── AppServer.php // 应用server类,可根据需求自定义
│ ├── Controllers // 控制器类目录
│ ├── Lib // 特殊逻辑处理类目录
│ ├── Models // Model类目录
│ ├── Route // 特殊路由规则类目录
│ ├── Tasks // Task类目录
│ └── Views // 视图文件目录
├── build.sh // 构建脚本(拉取docker镜像,启动容器)
├── checkstyle.sh // 代码检查脚本
├── composer.json // composer包依赖配置文件
├── config // 配置目录
├── server.php // server启动脚本
├── console.php // 命令行脚本
├── test // 单元测试目录
上記は php-msf に基づいた標準的なアプリケーション構造です。psr4 標準を満たす限り、ワンクリック インストール プログラム installer.php によってディレクトリが自動的に生成されます。自動的にロードされます。
デバッグモード
$ > ./server.php start
デーモンモード
$ > ./server.php start -d
サービスを停止する
$ > ./server.php stop
サービスを再起動する
$ > ./server.php restart
Docker ユーザーが簡単に環境をインストールして PHP-MSF デモ プロジェクトを実行できるように、Docker イメージを作成しました。また、開発環境でのコード変更の効果をリアルタイムにプレビューしたい場合は、Mac/Windows デスクトップ版の Docker を使用することをお勧めします。
Docker をアップグレードすると、元のイメージとコンテナが自動的に移行されます。途中で Docker プロセスを強制終了しないように注意してください。再移行が困難になります。
Docker レジストリ (Alibaba Cloud):
docker pull registry.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-internal.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-vpc.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull pinguoops/php-msf-docker
私たちは、アーキテクチャのマイクロサービスを実現するための nginx+php-fpm の代替テクノロジー スタックとして、HTTP に基づいた安定した高パフォーマンスの純粋な非同期マイクロサービス フレームワークの構築に焦点を当てていますが、Tcp/WebSocket サーバーはプラグインとしてサポートされます。 、または他の独立したオープンソース プロジェクトとして。
小規模なチームやビジネス システムの場合は、従来の nginx+php-fpm テクノロジー スタックを使用することをお勧めします。コストとパフォーマンスの点でボトルネックがなく、新しいテクノロジー スタックを導入する必要もありません。
サービス ガバナンスやサービス指向の進化の重要な段階にある大規模および中規模のチームやビジネス システムの場合、php-msf は選択肢の 1 つです。
大規模な PHP アプリケーション クラスターの場合、サーバーのコストを大幅に節約し、サービスのパフォーマンスを向上させたい場合は、php-msf が選択肢の 1 つになります。
大規模な Web サイトのホームページなどの集約サービスで、サーバー側の集約コンテンツを通じてデータを統合する場合、php-msf がオプションの 1 つになります。
推奨されるインストール方法は、プロジェクトcomposer.jsonを編集して依存関係pinguo/php-msf
を追加することですcomposer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
ログ コンポーネントは"monolog/monolog": "2.0.x-dev"
に依存しており、 monolog/monolog
には 2.0 リリース パッケージがないため、 "minimum-stability": "dev"
構成オプションを追加する必要があります。運用環境ではすでに実行されており、その安定性を確認します。
php-msf は、Camera360 コミュニティ サービスの高トラフィックと高同時実行に耐え、その安定性は完全に検証されています。安定性は私たちが多くの時間とエネルギーを費やして解決する最も重要な問題であり、3つの原則の中で最も重要な原則です。
IO 集約型ビジネスの単一マシンの処理能力は、実稼働環境で取得される実際のデータです。たとえば、Camera360 コミュニティの集約サービスでは、ピーク時のトラフィックに耐えるために 40 台のサーバーが必要です。 php-msf を使用して再構築した後、すべてのトラフィックに耐えるには、同じ構成の 4 つのサーバーのみが必要です。
Swoole の複雑なプロセス モデルは同期ブロッキングと非同期非ブロッキングに分かれているため、同じコード ロジックを実行する場合、呼び出しメソッドと渡すパラメーターに一貫性がない可能性があり、学習コストが直接増加します。レベルの違いについては、多くの作業が行われてきましたが、実装と従来の MVC フレームワークとの唯一の違いは、「yield」キーワードの追加です。 Yii2 フレームワークのいくつかのコード プラクティスを参照しましたが、Yii2 開発からシームレスに切り替えられることを期待しています。
上記の 3 つの原則は、新しい機能を実装する際の投票またはコードのマージの基礎となります。これらの原則に影響を与える PR も拒否されます。
現在、コミュニティにはコルーチンをサポートする PHP オープン ソース プロジェクトがいくつかありますが、そのほとんどは Generator+Yield を使用して実装されています。ただし、実装の微妙な違いにより、コルーチンが非同期ロジックを実行する可能性があることを認識する必要があります。同期コード記述メソッドなので、コルーチンです。スケジューラのパフォーマンスは十分に高い必要があります。php-msf のコルーチン スケジューリング パフォーマンスは、ネイティブの非同期コールバック メソッドの 80% です。つまり、ネイティブの非同期コールバック書き込みメソッドを使用する特定の API の QPS は 10,000 です。 php-msf コルーチン スケジューラ スケジューリング QPS は 8000 です。
現時点では、php-msf はまだ初期段階にあり、安定性、高性能、メモリの問題の解決に多くの時間とエネルギーを費やしてきました。なぜなら、「基礎」が「高機能」の最も基本的な保証であると信じているからです。基礎がしっかりしていてこそ、そうして初めて「建物」を「より高く」建てることができるのです。バージョン 3.0 はオープン ソースの初期バージョンであり、私たちにとって重要なステップです。次に、分散マイクロサービス フレームワークを磨き上げることに重点を置きます。
さらに、PHP 常駐プロセスに基づいており、HTTP または TCP リクエストを直接解析するため、これに基づいて、これまで実現できなかった多くのアイデアを実現できます。想像の余地がたくさんあります。
php-msf はもともと SwooleDistributed-1.7.x に基づいて開発されており、このオープンソース バージョンでは接続プールは主に SD 実装を使用しています。フレームワークの位置付け、解決するビジネス シナリオ、安定性の要件、コーディング スタイルはすべて異なるため、それぞれのフレームワークには独自の特徴と利点があります。自社やビジネスに適したものを選択してください。フレームワークは最も重要であり、これについては White Cat に感謝します。また、php-msf フレームワークと運用環境アプリケーションの開発中に、多くの根本的な問題に遭遇しましたが、それらはすべて 1 つずつ解決されました。 1 つは、これらの問題を解決できる最も重要なことは、Swoole オープンソース プロジェクトです。創設者の Han Tianfeng-Rango 氏の強力なサポートに深く感謝いたします。
GNU 一般公衆利用許諾書、バージョン 2 https://www.gnu.org/licenses/gpl-2.0.html を参照してください。