序文
Workerman、高性能なPHPアプリケーションコンテナ
Workermanとは何ですか?
Workermanは、純粋なPHPで開発されたオープンソースの高性能PHPアプリケーションコンテナです。
Workermanは車輪の再発明ではありません。これはMVCフレームワークではなく、より低レベルで一般的なサービスフレームワークであり、これを使用してTCPプロキシ、VPNプロキシ、ゲームサーバ、メールサーバ、FTPサーバ、さらにはPHP版のRedis、PHP版のデータベース、PHP版のNginx、PHP版のPHP-FPMなどを開発できます。WorkermanはPHP領域での革新と言えるでしょう。これにより、開発者はPHPだけでWebを作るという束縛から完全に解放されます。
実際、WorkermanはPHP版のNginxに似ており、コアもマルチプロセス+Epoll+ノンブロッキングIOです。Workermanの各プロセスは数万の同時接続を維持できます。常駐メモリを利用し、Apache、Nginx、PHP-FPMなどのコンテナに依存せず、非常に高いパフォーマンスを持っています。また、TCP、UDP、UNIXソケットをサポートし、長期接続をサポートし、WebSocket、HTTP、WSS、HTTPSなどの通信プロトコルやさまざまなカスタムプロトコルをサポートしています。タイマー、非同期ソケットクライアント、非同期Redis、非同期HTTP、非同期メッセージキューなど多数の高性能コンポーネントを備えています。
Workermanのいくつかの応用分野
Workermanは従来のMVCフレームワークとは異なり、Web開発にだけ使われるものではなく、即時通信、IoT、ゲーム、サービスガバナンス、他のサーバやミドルウェアなど幅広い応用分野に向けられています。これにより、PHP開発者の視野が大幅に広がります。これらの分野のPHP開発者はまれであり、PHP領域で技術的な優位性を持ちたい場合、毎日のCRUD作業に満足せず、アーキテクトやテックリードに進んだり、Workermanは非常に学びがあるフレームワークです。開発者には単に使用するだけでなく、Workermanをベースに独自のオープンソースプロジェクトを開発することで、スキルを向上させて影響力を高めることをお勧めします。たとえば、Beanbunマルチプロセスネットワーククローラーフレームワークは、その立ち上げたばかりで多くの賞賛を受けています。
Workermanのいくつかの応用分野は以下の通りです:
-
即時通信
例:ウェブのリアルタイムチャット、リアルタイムメッセージ送信、WeChat Mini Program、モバイルアプリのメッセージ送信、PCソフトウェアのメッセージ送信など
[例 workerman-chatチャットルーム、Webメッセージ送信、Workerman-Todpoleチャットルーム] -
IoT
例:Workermanを用いたプリンター通信、マイコン通信、スマートウォッチ、スマートホーム、シェアサイクルなど
[お客様の事例:易联云、易泊时代等] -
ゲームサーバ
例:トランプゲーム、MMORPGゲームなど
[例 browserquest-php] -
HTTPサービス
例:高性能なHTTPインターフェース、高性能なウェブサイト。HTTP関連のサービスやサイトを構築する場合は、webmanを強くお勧めします。 -
SOAサービス化
Workermanを使用して、既存の業務機能ユニットをサービスとしてまとめ、システムの疎結合、容易なメンテナンス、高い可用性、拡張性を実現します。
[例 workerman-json-rpc、workerman-thrift] -
その他のサーバーソフトウェア
例 GatewayWorker、PHPSocket.IO、HTTPプロキシ、sock5プロキシ、分散通信コンポーネント、分散データ共有コンポーネント、メッセージキュー、DNSサーバ、Webサーバ、CDNサーバ、FTPサーバなど -
コンポーネント
例:非同期Redis、非同期HTTPクライアント、IoT MQTTクライアント、メッセージキュー workerman/redis-queue、workerman/stomp、workerman/rabbitmq 、ファイル監視コンポーネントなど、さまざまなサードパーティー開発のコンポーネントフレームワークがあります
伝統的なMVCフレームワークでは、上記のような機能を実現するのが難しいため、そのためにWorkermanが誕生したのです。
Workermanの考え方
シンプル、安定、高性能、分散。
シンプル
小さければ美しい。Workermanのコアは非常にシンプルで、わずかなPHPファイルのみを公開し、学習が非常に簡単です。その他の機能は、コンポーネントとして拡張可能です。
Workermanには完全なドキュメント、権威あるウェブサイト、活発なコミュニティ、複数の1000人規模のQQグループ、多数の高性能コンポーネント、そして多くの例があり、これにより開発者は簡単に使用できます。
安定
Workermanは数年前にオープンソース化され、多くの上場企業で大規模に使用されています。非常に安定しており、一部のサービスは2年以上再起動せずに高速で実行されています。コアダンプ、メモリリーク、バグはありません。
高性能
常駐メモリを利用しているため、apache/nginx/php-fpmに依存せず、リクエストごとにすべてを初期化して破棄するコストがなく、伝統的なMVCフレームワークよりも数十倍の性能を持っています。PHP7では、ab負荷テストによるQPSが単独のnginxを上回るほどの高性能です。
分散
今や一人での戦いではなく、一台のサーバの性能がいかに優れていても、分散マルチサーバの展開が最も重要です。Workermanは直接GatewayWorkerフレームワークを提供し、サーバの追加は簡単な設定と起動だけで済み、ビジネスコードの変更は必要ありません。システムの負荷容量が倍増します。TCP長期接続アプリケーションを開発する場合は、GatewayWorkerを直接使用することをお勧めします。これはWorkermanをラップし、長期接続アプリケーションにより豊富なインターフェースと強力な分散処理能力を提供しています。
本マニュアルの対象範囲
Workerman 3.x - 4.x バージョン
Windowsユーザー(必読)
WorkermanはLinuxシステムとWindowsシステムの両方をサポートしています。Windows版のWorkermanは任意の拡張機能に依存しません。PHP環境変数を適切に設定するだけで使用できます。Windows版のWorkermanのインストールと注意事項については、Windowsユーザー必読を参照してください。
クライアント
Workermanの通信プロトコルはオープンであり、カスタマイズ可能です。したがって、理論上Workermanは任意のプロトコルを使用する任意のプラットフォームのクライアントと通信できます。ユーザーがクライアントを開発するときは、対応する通信プロトコルに従い、サーバとの通信を行います。