swoole的協(xié)程是能達(dá)到異步IO的性能,但相比異步IO和多線程來講,swoole協(xié)程是以同步編碼方式來實(shí)現(xiàn),而非回調(diào)方式。
問題:
如果現(xiàn)在的業(yè)務(wù)邏輯是同步的(例如:先查詢Mysql獲取某條記錄的ID,再根據(jù)此ID去查詢r(jià)edis的某條記錄),那么能否使用swoole協(xié)程實(shí)現(xiàn)呢?
PS :
據(jù)我所知,swoole協(xié)程雖然是同步編碼風(fēng)格,但是其實(shí)是類似異步IO方式并發(fā)執(zhí)行,所以很疑惑同步邏輯能否實(shí)現(xiàn)?,異步IO是在回調(diào)函數(shù)中又套回調(diào)函數(shù),不好理解
3 回答

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
可以的,同步的業(yè)務(wù)邏輯,異步執(zhí)行的IO是不沖突的。
但是其實(shí)是類似異步IO方式并發(fā)執(zhí)行
同一段業(yè)務(wù)邏輯里,有數(shù)據(jù)依賴的IO是不會(huì)并發(fā)執(zhí)行的,但是不同業(yè)務(wù)邏輯里沒數(shù)據(jù)依賴的IO才會(huì)并發(fā)執(zhí)行。
例如:
先查詢Mysql獲取某條記錄的ID,再根據(jù)此ID去查詢r(jià)edis的某條記錄
必須要先查Mysql再查Redis,但是并發(fā)處理多個(gè)這樣的請(qǐng)求時(shí),多個(gè)Mysql查詢就可以并發(fā),多個(gè)Redis也可以并發(fā)。

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
同步代碼會(huì)阻塞Worker,得到的好處將只有持久化,而協(xié)程使用的是異步IO,不會(huì)阻塞Worker
- 3 回答
- 0 關(guān)注
- 473 瀏覽
添加回答
舉報(bào)
0/150
提交
取消