swoole如何管理叢集?
swoole websocket server叢集怎麼做?
問題:
1,swoole websocket叢集如何做到自動輪換,保證可靠性
2,swoole websocket server叢集中,如何讓server1 的client A 向server2 的client B 推播訊息?
回答:
首先你要了解問題的本質是你不在同一個進程空間裡(當然在不同的伺服器上),你無法直接通訊,因為無法共享tcp連線或無法直接操作對應的tcp連線
現假如你有個叢集裡面有同樣服務的多機子(每天當成一個工作流程):A和B
現在你想A裡的某連線(某客戶)向B裡的某連線(某客戶)通訊的思路:
啟動一台伺服器M
在A和B的啟動進程裡,開啟一個連線M的客戶端(分別我們叫C1,C2),並監聽事件
A裡的某連接(某客戶)發送訊息A伺服器,A伺服器處理相關的B標識用戶資料, 轉交給C1,然後C1發送訊息給M伺服器
然後M伺服器,發送訊息給所有的連接的客戶端(當然這裡如果你做了相應的用戶標識,識別到了C2, 直接發送訊息給C2就可以了)
M發送訊息給C2,然後C2根據標識查找到B裡具體的某連接,然後直接發送訊息就好了
以上是swoole如何管理集群的詳細內容。更多資訊請關注PHP中文網其他相關文章!