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

關(guān)于gateway里的worker多進(jìn)程的疑惑的問(wèn)題

testqkl

大致都瀏覽了好幾次文檔了,有幾個(gè)疑惑:
看了文檔里實(shí)例里worker的count都是設(shè)置成4,問(wèn)題來(lái)了,那么一個(gè)多websocket客戶端連接到服務(wù)器肯定是會(huì)按一定規(guī)律分配給不同的worker,多進(jìn)程間數(shù)據(jù)是無(wú)法共享的,那么廣播群發(fā),workerman怎么處理的,利用了什么機(jī)制,內(nèi)存數(shù)據(jù)共享機(jī)制嗎? 我看了下大致的源碼,找到一個(gè)gateway類里有一個(gè)_clientConnections,不明白這個(gè)是怎么共享的,而且gateway也是有count設(shè)置成4個(gè)進(jìn)程的,不解

4688 3 0
3個(gè)回答

mdx2007

之前看了下workerman源碼,沒(méi)看到有共享內(nèi)存操作的代碼。也就是進(jìn)程間的數(shù)據(jù)不是共享的。
如果業(yè)務(wù)要共享數(shù)據(jù)用redis mysql會(huì)好一些。

看gateway源碼是利用了進(jìn)程間通訊來(lái)做到多進(jìn)程廣播數(shù)據(jù)的。businessWorker和每個(gè)gateway都有內(nèi)部連接,要廣播時(shí)直接給每個(gè)gateway內(nèi)部連接發(fā)個(gè)消息就好了,如果是給某個(gè)連接發(fā)消息,只需要給對(duì)應(yīng)的gateway內(nèi)部連接發(fā)消息就好了。businessWorker和每個(gè)gateway都是tcp socket相連的,我感覺(jué)用unix socket性能可能會(huì)更好一些,不知道作者為啥選了tcp socket。

  • 暫無(wú)評(píng)論
maq

簡(jiǎn)單說(shuō),在 GatewayWorker 框架下,存在多個(gè) Gateway 實(shí)例和多個(gè) BusinessWorker 實(shí)例,在 Register 的協(xié)調(diào)下,Gateway 知道所有的 BusinessWorker,BusinessWorker 也知道所有的 Gateway。

Gateway 收到客戶的請(qǐng)求時(shí),挑一個(gè) BusinessWorker 來(lái)處理,并回傳處理結(jié)果。

BusinessWorker 如果有組播或者廣播的需求,就通知所有的 Gateway 一起干。

  • 暫無(wú)評(píng)論
testqkl

感謝樓上的解答,又自己看了幾遍文檔,大致有些理解了

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??