Channel通訊組件,需要對server服務端做負載均衡,且客戶端worker也在不同的服務器上,在不同客戶端worker上做了長連接。
server服務端做負載均衡可以實現(xiàn)嗎?
各客戶端worker的長連接數據池如何共享?
用戶端通過ws建立連接可以通過負載均衡的IP或lvs嗎?
server服務端做負載均衡可以實現(xiàn)嗎?
Channel/Server 目前只能單進程,沒有負載均衡的需要。
各客戶端worker的長連接數據池如何共享?
進程間無法共享連接,當需要操作某個進程的某個/些連接時可以通過Channel通訊組件通知對應進程處理
用戶端通過ws建立連接可以通過負載均衡的IP或lvs嗎?
可以
那就是說客戶端只能通過真實ip和端口去連接1個Channel/Server進程,在負載多個worker的時候需要把Channel/Server進程與worker分開服務器部署,多個worker支持長連接的負載均衡單無法直接共享數據池,實際用戶在建立連接的時候是不會重復。重連的時候可能會連到服務器和之前握手的不同。在推送的時候需要讓這些worker同時收到消息在對每個worker內的連接進行篩選之后推送。
推送的時候不一定推給所有worker進程,可以利用channel只推給需要的進程。例如向單個客戶端推送的時候,客戶端id里包含了連接所在的進程信息,那么只需要給對應進程推送即可。這些都是可以自己寫邏輯控制的。