因為多個worker是競爭消費的,沒有辦法保證一一對應(yīng)。我看現(xiàn)在的解決方案只有使用channel注冊訂閱的方式,還有其它方案可以解決嗎
對于純workerman環(huán)境:
一個socket連接一旦連接到哪個worker進程,那么后續(xù)這個連接上的消息依然還是由相應(yīng)的這個worker進程來處理的;【worker節(jié)點依賴內(nèi)核調(diào)度實現(xiàn)】
再比如gatewayworker環(huán)境:
也有類似的實現(xiàn)機制,gateway轉(zhuǎn)發(fā)連接連接到businessworker時,一開始隨機路由選擇一個worker進程,在此之后同一連接繼續(xù)轉(zhuǎn)發(fā)來的消息就會自動交由給先前路由好的那個進程?!緒orker節(jié)點依賴內(nèi)核調(diào)度實現(xiàn),轉(zhuǎn)發(fā)節(jié)點之間則依賴應(yīng)用實現(xiàn)】
對于純workerman環(huán)境:有沒有內(nèi)核版本限制呢,我看3.9以上使用了端口復(fù)用SO_REUSEPORT可以實現(xiàn)同一個連接一直由同一個worker處理(內(nèi)核根據(jù)tcp四元組hash負載均衡)。