用workerman/http-client異步,如果被請求的服務(wù)器沒有開子線程 還是會被堵塞
單獨(dú)的部署wokermen,然后用workerman/http-client做異步請求到服務(wù)器,如果服務(wù)器子線程不開,那么依舊不能訪問,這個(gè)workerman/http-client是怎么實(shí)現(xiàn)異步非閉塞的?
不知道你說的阻塞具體什么現(xiàn)象?
我理解你說的意思應(yīng)該是A服務(wù)器http-client訪問B服務(wù)器,B服務(wù)器沒開多線程,導(dǎo)致B服務(wù)器請求是一個(gè)一個(gè)處理的,并不能并發(fā)處理,這是正?,F(xiàn)象,但這不能說明 workerman/http-client 被阻塞了。A服務(wù)器的 workerman/http-client 并不能提高B服務(wù)器的并發(fā)啊
沒有 workerman和服務(wù)器是分離的
這種說法。
workerman使用http-client發(fā)起請求后,workerman可以繼續(xù)做其它業(yè)務(wù),不需要阻塞等待請求返回。
如果是workerman使用curl同步阻塞請求,那么workerman就無法繼續(xù)做其它業(yè)務(wù),必須阻塞等待請求返回。
舉個(gè)例子,業(yè)務(wù)需要http調(diào)用5個(gè)接口,每個(gè)接口1秒耗時(shí),http-client可以同時(shí)發(fā)起5個(gè)請求并繼續(xù)處理其它業(yè)務(wù),1秒后得到5個(gè)結(jié)果。
而同步請求需要5個(gè)http接口需要依次阻塞調(diào)用,期間不能做其它業(yè)務(wù),至少耗時(shí)5秒
區(qū)別在于不占用原有服務(wù)。比如你對外提供1個(gè)進(jìn)程處理請求,當(dāng)使用異步請求時(shí)候,客戶發(fā)給你你通過異步請求B,此時(shí)進(jìn)程可以馬上處理下一個(gè)發(fā)給他的請求。而如果是同步的請求,則進(jìn)程必須等待B有結(jié)果,才開始處理下一個(gè)請求。
剛才大家的耐心回復(fù),我大致明白的,其實(shí)我需要的是復(fù)用子進(jìn)程!我目前只用異步消息列隊(duì)先大致實(shí)現(xiàn)功能!