国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如果在開啟多個worker,由fpm通過socket來觸發(fā)推送消息,如何保證消息在一定被用戶歸屬connect的worker處理?

liuzeming

因?yàn)槎鄠€worker是競爭消費(fèi)的,沒有辦法保證一一對應(yīng)。我看現(xiàn)在的解決方案只有使用channel注冊訂閱的方式,還有其它方案可以解決嗎

2029 3 0
3個回答

phpcreeper

對于純workerman環(huán)境:
一個socket連接一旦連接到哪個worker進(jìn)程,那么后續(xù)這個連接上的消息依然還是由相應(yīng)的這個worker進(jìn)程來處理的;【worker節(jié)點(diǎn)依賴內(nèi)核調(diào)度實(shí)現(xiàn)】
再比如gatewayworker環(huán)境:
也有類似的實(shí)現(xiàn)機(jī)制,gateway轉(zhuǎn)發(fā)連接連接到businessworker時,一開始隨機(jī)路由選擇一個worker進(jìn)程,在此之后同一連接繼續(xù)轉(zhuǎn)發(fā)來的消息就會自動交由給先前路由好的那個進(jìn)程?!緒orker節(jié)點(diǎn)依賴內(nèi)核調(diào)度實(shí)現(xiàn),轉(zhuǎn)發(fā)節(jié)點(diǎn)之間則依賴應(yīng)用實(shí)現(xiàn)】

  • liuzeming 2020-07-18

    對于純workerman環(huán)境:有沒有內(nèi)核版本限制呢,我看3.9以上使用了端口復(fù)用SO_REUSEPORT可以實(shí)現(xiàn)同一個連接一直由同一個worker處理(內(nèi)核根據(jù)tcp四元組hash負(fù)載均衡)。

  • phpcreeper 2020-07-18

    進(jìn)程的負(fù)載均衡是需要開啟端口復(fù)用機(jī)制、workerman已經(jīng)支持、另linux內(nèi)核好像是需要2.6以上即可。

  • liuzeming 2020-07-18

    @614:我在網(wǎng)上查,內(nèi)核要3.9以上。如果沒有3.9以上,感覺就只能夠單進(jìn)程或者使用channel了

小陽光

每個worker 維持部分連接。所以單進(jìn)程或者使用channel可以。換個角度想,可不可以每個進(jìn)程開啟一個udp內(nèi)部端口,接收廣播,有這個id就做事,沒就不管。廣播如果有廣播風(fēng)暴,用redis隊(duì)列呢?或者消息隊(duì)列,同理在我這,我就處理,沒有我就不管。

  • liuzeming 2020-07-20

    開啟一個udp內(nèi)部端口,接收廣播,有這個id就做事,沒就不管,channel就是這個原理。redis或者消息隊(duì)列用不了,會阻塞

喵了個咪

每個worker進(jìn)程開一個內(nèi)部端口,每個進(jìn)程內(nèi)部端口不一樣,這樣就可以用socket連對應(yīng)的進(jìn)程內(nèi)部端口,就能保證消息在一定被用戶歸屬connect的worker處理。不過前提是你知道用戶歸屬connect的worker是哪個進(jìn)程。

  • liuzeming 2020-07-20

    這種處理方式是不優(yōu)雅的,相當(dāng)于你需要起很多不同的端口才行,而且都只能夠單進(jìn)程

年代過于久遠(yuǎn),無法發(fā)表回答
??