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

如何正確且有效率的重新加載變量

conrad

目前在制作一個(gè)聊天室,有聊天禁詞的需求。
目前是在 BussinessWorker::onWorkerStart 回調(diào)的時(shí)候,從 mysql 中加載這些禁詞。
?
現(xiàn)在碰到一個(gè)問(wèn)題,目前想實(shí)現(xiàn)不連服務(wù)器下口令重啟 BussinessWorker 的狀況下,來(lái)重新加載這些禁詞。
所以想到的方式就是寫(xiě)一個(gè) websocket client 端,透過(guò)發(fā)送消息的方式來(lái)呼叫 bussiness worker 來(lái)重新加載。
但現(xiàn)在擔(dān)心會(huì)有另外一個(gè)問(wèn)題就是,如果我的 bussiness worker 有很多組的話,要怎么樣確保每個(gè) bussiness worker 都能重新加載這些禁詞?

2392 1 0
1個(gè)回答

phpcreeper

首先這個(gè)場(chǎng)景沒(méi)有必要重啟BussinessWorker,也不夠平滑;

分享兩種參考方案:
1、單獨(dú)開(kāi)一個(gè)text協(xié)議的gateway 實(shí)例并監(jiān)聽(tīng)一個(gè)內(nèi)部端口,然后每次禁詞內(nèi)容發(fā)生變化就推送到這個(gè)端口;至于如何保證每個(gè)BussinessWorker都能收到,可以自行定制gateway->router的路由規(guī)則,然后路由給所有的BussinessWorker進(jìn)程,要絕對(duì)保證的話,那就結(jié)合業(yè)務(wù)弄上版本號(hào)或批次號(hào)采用ACK應(yīng)答機(jī)制來(lái)加固;
2、采用redis來(lái)做,禁詞都存放到 redis,然后每個(gè)BussinessWorker進(jìn)程定期去redis里拉數(shù)據(jù),這樣能保證每個(gè)BussinessWorker進(jìn)程都能拉到數(shù)據(jù),也比存mysql要高效,但是比較被動(dòng);
?
最后要是追求更高性能的話,禁詞一般也站用不了多少內(nèi)存,最后可以給每個(gè) $businessworker設(shè)置一個(gè)屬性存起來(lái);

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