swoole はクラスターをどのように管理しますか?
WebSocket サーバー クラスターをスウールするにはどうすればよいですか?
質問:
1. 信頼性を確保するために swoole Websocket クラスターで自動ローテーションを実現する方法
2. swoole Websocket サーバー クラスターで、サーバー 1 のクライアント A がサーバー 2 のクライアント B に情報をプッシュしますか?
回答:
まず、問題の本質は、同じプロセス空間にいない (もちろん、別のサーバー上にある) ことであることを理解する必要があります。 tcp を共有できないため、直接通信できません。接続または対応する tcp 接続を直接操作することはできません。
ここで、クラスター内に同じサービスを持つ複数のマシンがある場合 (毎日 1 つの作業プロセスとして): A と B
今、あなたがしたいのは、B の特定の接続 (特定のクライアント) から特定の接続 (特定のクライアント) へ通信するというアイデアです:
サーバー M# を起動します
##A と B の起動プロセスで、M クライアント (それぞれ C1 と C2 と呼びます) の接続を開き、イベントをリッスンします#A の特定の接続 (特定のクライアント) が送信するA サーバーにメッセージを送信すると、A サーバーは関連する B で識別されたユーザー データを処理して C1 に転送し、その後 C1 が M サーバーにメッセージを送信します。
その後、M サーバーが接続されているすべてのユーザーにメッセージを送信します。クライアント (もちろん、対応するユーザー ID を作成して C2 を識別すれば、メッセージを C2 に直接送信できます)
M が C2 にメッセージを送信すると、C2 は、識別子を指定して、メッセージを直接送信します
以上がswoole がクラスターを管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。