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

多臺(tái)gateway之間的通訊原理是什么?

2710046

我想通過(guò)LVS負(fù)載均衡實(shí)現(xiàn)多臺(tái)gateway來(lái)滿足高并發(fā),如果LVS把用戶A連接到了gateway1,用戶B連接到了gateway2,兩個(gè)用戶不在一個(gè)gateway下面,這兩個(gè)用戶如何互相發(fā)送數(shù)據(jù)?實(shí)現(xiàn)原理是什么呢?盼回復(fù)。

10739 1 1
1個(gè)回答

walkor 打賞

workerman啟動(dòng)過(guò)程:
workermangateway/worker模型中有兩種進(jìn)程,gateway進(jìn)程(負(fù)責(zé)異步網(wǎng)絡(luò)IO)和worker進(jìn)程(負(fù)責(zé)業(yè)務(wù)邏輯)。wokerman啟動(dòng)時(shí)會(huì)啟動(dòng)gateway進(jìn)程和worker進(jìn)程,gateway進(jìn)程啟動(dòng)時(shí)會(huì)向一個(gè)存儲(chǔ)(文件或者memcache,可配置)寫(xiě)入每個(gè)gateway進(jìn)程的內(nèi)部通訊地址,worker進(jìn)程啟動(dòng)時(shí)會(huì)讀取存儲(chǔ),并向每個(gè)geteway內(nèi)部通訊地址建立起長(zhǎng)連接。同時(shí)worker進(jìn)程中會(huì)有個(gè)定時(shí)任務(wù),定時(shí)監(jiān)測(cè)存儲(chǔ)中是否有新的gateway內(nèi)部通訊地址加入,有的話同樣建立長(zhǎng)連接(這樣增加workerman服務(wù)器就會(huì)自動(dòng)探測(cè)到,新的gateway、worker進(jìn)程就會(huì)加入集群)。gateway和worker之間的通訊就是靠?jī)?nèi)部的長(zhǎng)連接通訊的,每個(gè)gateway進(jìn)程會(huì)和后端所有worker進(jìn)程有一個(gè)長(zhǎng)連接,每個(gè)gateway進(jìn)程都知道有多少worker進(jìn)程,每個(gè)worker進(jìn)程也知道有哪些gateway進(jìn)程。

廣播和單獨(dú)發(fā)送
發(fā)送數(shù)據(jù)分為兩種,一種是廣播(給所有在線客戶端發(fā)),另外一種是單獨(dú)給某客戶端發(fā)送。

廣播:
廣播比較好實(shí)現(xiàn),當(dāng)某個(gè)客戶端要廣播數(shù)據(jù)時(shí),worker進(jìn)程中調(diào)用Gateway::sendToAll($message)即可。這時(shí)worker進(jìn)程會(huì)向所有g(shù)ateway進(jìn)程通過(guò)已經(jīng)建立的長(zhǎng)連接發(fā)送一條廣播命令+數(shù)據(jù),每個(gè)gateway進(jìn)程都會(huì)收到這個(gè)命令+數(shù)據(jù),向gateway進(jìn)程自己所維護(hù)的所有客戶端連接發(fā)送數(shù)據(jù)(異步)。

單獨(dú)發(fā)送:
單獨(dú)發(fā)送調(diào)用Gateway::sendToClient($client_id, $message);。也就是說(shuō)單獨(dú)發(fā)送需要得到對(duì)方的client_id。workerman發(fā)送向client_id發(fā)送數(shù)據(jù)時(shí),需要通過(guò)client_id獲得到client_id對(duì)應(yīng)的gateway內(nèi)部通信地址,而這個(gè)地址是在每個(gè)客戶端連接gateway時(shí)就存儲(chǔ)了的(文件或者memcache,可配置),通過(guò)這個(gè)存儲(chǔ)得知gateway內(nèi)部通訊地址后,向這個(gè)地址發(fā)送命令+數(shù)據(jù),對(duì)應(yīng)gateway進(jìn)程收到命令+數(shù)據(jù)后找到對(duì)應(yīng)的客戶端socket發(fā)送數(shù)據(jù)即可。

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