GatewayClient在調(diào)用方法前需要設(shè)置registerAddress,但是這個(gè)屬性是靜態(tài)的,那在GatewayWorker是多實(shí)例(多應(yīng)用)或者項(xiàng)目是常駐內(nèi)存的情況下,這個(gè)靜態(tài)的registerAddress屬性的設(shè)置會(huì)不會(huì)互相影響到?
本質(zhì)上GatewayClient就是一個(gè)發(fā)送特定數(shù)據(jù)的tcp或者udp的類庫(kù),確保registerAddress就行,會(huì)不會(huì)混亂取決你如何寫(xiě),就好比數(shù)據(jù)庫(kù)連接
我現(xiàn)在是采用官方推薦的GatewayWorker和TP框架結(jié)合的方式,然后用swoole做http服務(wù)器(workerman應(yīng)該也是類似,常駐內(nèi)存),非阻塞I/O,是不是請(qǐng)求A遇到I/O就會(huì)切換處理請(qǐng)求B,如果請(qǐng)求B改變了registerAddress的值,那么再切換回請(qǐng)求A是不是就會(huì)出錯(cuò)呢?目前在厘清這里面的問(wèn)題
如果GatewayClient如果要設(shè)置多個(gè)registerAddress,不要使用swoole和swow,很大概率會(huì)出現(xiàn)并發(fā)問(wèn)題。
除非你會(huì)加鎖,讓 registerAddressse設(shè)置和調(diào)用Gateway接口是一個(gè)完整的操作,期間不會(huì)被其它協(xié)程修改registerAddressse
workerman里不是用swoole/swow可以避免這個(gè)問(wèn)題。gatewayClient是阻塞方式調(diào)用的,不會(huì)出現(xiàn)問(wèn)題。