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