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

如果workerman實現(xiàn)分布式處理

DY

如果workerman實現(xiàn)分布式處理,是不是需要通過socket進(jìn)行多臺服務(wù)器的通訊,那么這個socket的通訊模式,和fastcgi相比,好在什么地方?

6358 8 0
8個回答

walkor 打賞

workerman分布式不一定要多臺服務(wù)器間socket通訊,看具體應(yīng)用,例如短鏈接類的WEB應(yīng)用,就不用服務(wù)器間通訊。fastcgi是一種協(xié)議,和分布式?jīng)]有必然聯(lián)系,我也不知道怎么和workerman來比較。

  • 暫無評論
DY

嗯,目標(biāo)需求是一個游戲服務(wù)器

需要用3臺Server對游戲的邏輯進(jìn)行處理

一臺Gateway,進(jìn)行連接管理。

那如果Gateway向Server發(fā)送處理請求,是不是必然需要通過Socket進(jìn)行通訊。

還是通過共享內(nèi)存,大家都去訪問一個memcache機(jī)器之類的部署方式。

因為FastCGI是基于Socket的一種模式,所以Gateway只需要設(shè)置好要請求FastCGI網(wǎng)關(guān)地址,然后進(jìn)行輪訓(xùn)請求就可以達(dá)到效果。

所以想問一下,如果是Worekerman,該怎么處理?

  • 暫無評論
walkor 打賞

workerman中 Gateway和BusinessWorker之間的通訊是TCP長鏈接通訊。而FastCGI一般用于短鏈接通訊,使用FastCGI會有頻繁的創(chuàng)建鏈接TCP三次握手和斷開鏈接TCP四次握手的通訊過程,導(dǎo)致服務(wù)器網(wǎng)絡(luò)IO及CPU負(fù)載都會高一些,而且在創(chuàng)建鏈接時也會造成請求的等待,影響通訊的即時性。另外FastCGI協(xié)議比較復(fù)雜,解析起來也比較耗費(fèi)CPU,F(xiàn)astCGI更適合WEB類的應(yīng)用。相比workerman的協(xié)議是自己訂制的,簡單高效。

  • 暫無評論
DY

哦,那我明白了

workerman里

Gateway會跟N臺服務(wù)器的BusinessWorker進(jìn)行長連接通信,從而實現(xiàn)分布式,是這個意思吧?

  • 暫無評論
walkor 打賞

對的。
而且Gateway與BusinessWorker之間是自動感知的,你加一臺BussnessWorker或者下掉一臺BusinessWorker,Gateway都會自動感知,不用配置Gateway,非常方便。

  • 暫無評論
DY

哦?這個自動感知是掃描端口監(jiān)聽么?

  • 暫無評論
ayamzh

老大。你所說的自動感知機(jī)制。的相關(guān)代碼在哪,怎么實現(xiàn)

  • 暫無評論
walkor 打賞

BusinessWorker進(jìn)程啟動的時候會自動讀取一個存儲,這個存儲中保存著所有Gateway進(jìn)程內(nèi)部通訊的ip和端口,然后BusinessWorker與這些ip端口建立長鏈接,這時Gateway會自動感知到有新的BusinessWorker加進(jìn)來,以后有客戶端請求到來時會自動將請求按照規(guī)則(目前是隨機(jī)或者說是輪詢)發(fā)送到新加的BusinessWorker。

當(dāng)下掉一臺BusinessWorker時,這臺BusinessWorker與Gateway的長鏈接會斷開,Gateway此時也會感知到,然后Gateway將斷開的長鏈接從自己與BusinessWorker的長連接池中去掉,就不會向下掉的BusinessWorker轉(zhuǎn)發(fā)客戶端請求了。

原理就是這樣,代碼見 Bootstrap/Gateway.php Bootstrap/BusienessWorker.php

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