worker,您好,最近在做一個物聯(lián)網(wǎng)項目,使用的是MQTT協(xié)議的sub訂閱/pub發(fā)布模式,自建了MQTT服務器,物聯(lián)設備上報消息,然后MQTT客戶端服務器訂閱設備上報的消息并發(fā)布返回/指令消息。
當MQTT客戶端服務器(訂閱者)連接數(shù)超載需要用到分布式時,能否使用GatewayWorker的方式,以MOTT客戶端服務器作為Worker服務和Gateway服務器通信?
如果可以應該要如何實現(xiàn),能否提供一些實現(xiàn)思路。
有查詢到MQTT客戶端服務器(訂閱者)分布式方案:可以使用共享訂閱的方式來解決多個訂閱者訂閱同一個topic的方案。
現(xiàn)在想了解下能否用GatewayWorker這種模式實現(xiàn)多個訂閱者訂閱同一個topic,而不重復訂閱的方法。
GatewayWorker是一個基于Workerman開發(fā)的高性能、異步事件驅動的網(wǎng)關服務框架,支持TCP/UDP長連接和WebSocket長連接協(xié)議,可用于構建高性能的網(wǎng)絡應用。但是,GatewayWorker本身并不支持MQTT協(xié)議,所以無法直接使用GatewayWorker來實現(xiàn)MQTT客戶端服務器的分布式。
對于MQTT客戶端服務器的分布式,您可以使用MQTT協(xié)議本身提供的共享訂閱機制。共享訂閱機制允許多個訂閱者訂閱同一個topic,并且每個消息只會被其中一個訂閱者接收到,從而實現(xiàn)訂閱者之間的負載均衡。您可以將多個MQTT客戶端服務器(訂閱者)連接到同一個MQTT服務器上,并使用共享訂閱的方式訂閱同一個topic,就可以實現(xiàn)MQTT客戶端服務器的分布式了。
另外,如果您想使用GatewayWorker來實現(xiàn)MQTT協(xié)議的服務,您可以考慮使用MQTT協(xié)議的PHP實現(xiàn)庫,例如phpMQTT等,并結合GatewayWorker進行開發(fā)。但是,這種方式需要您進行額外的開發(fā)和適配,相對較為復雜。
沒看出來你的需求哪里需要gatewayWorker了。如果需要mqtt客戶端服務器分布式,原來單機的,再部署幾套然后訂閱改成共享訂閱就好了。 mqtt客戶端 http://www.wtbis.cn/doc/workerman/components/workerman-mqtt.html