RpcClient 客戶(hù)端中異步,同步的概念不是很理解
從代碼上看,異步發(fā)送數(shù)據(jù)時(shí) 新創(chuàng)建了當(dāng)前類(lèi),同步發(fā)送直接用當(dāng)前類(lèi)
是不是可以這樣理解?
同步發(fā)送 用同一個(gè)socket 發(fā)送
異步發(fā)送 用不同socket 發(fā)送
RpcClient 里面的異步的意思是發(fā)送請(qǐng)求后不直接阻塞讀取。等需要結(jié)果時(shí)在讀取結(jié)果。
正常批量請(qǐng)求時(shí)過(guò)程類(lèi)似這樣
發(fā)起請(qǐng)求A,等待A的結(jié)果(耗時(shí)500毫秒)
發(fā)起請(qǐng)求B,等待B的結(jié)果(耗時(shí)500毫秒)
發(fā)起請(qǐng)求C,等待C的結(jié)果(耗時(shí)500毫秒)
三個(gè)請(qǐng)求串行,總耗時(shí)1500毫秒
RpcClient中異步批量請(qǐng)求流程類(lèi)似這樣
發(fā)起請(qǐng)求A,發(fā)起請(qǐng)求B,發(fā)起請(qǐng)求C
等待結(jié)果
得到結(jié)果A,得到結(jié)果B,得到結(jié)果C
三個(gè)請(qǐng)求并行在服務(wù)端處理,總耗時(shí)500毫秒
這樣異步并行處理可以減少客戶(hù)端等待時(shí)間,
例如用戶(hù)主頁(yè)需要拉取用戶(hù)信息、好友信息、日志數(shù)據(jù)、其他數(shù)據(jù),
這些數(shù)據(jù)如果按照傳統(tǒng)php做法就是串行的去獲取,耗時(shí)會(huì)很長(zhǎng)。
如果像RpcClient那樣異步批量處理,則會(huì)大大縮短頁(yè)面響應(yīng)時(shí)間。
說(shuō)白了RpcClient的異步處理就是利用分布式并行處理的方式減少響應(yīng)時(shí)間。