137-rick / Dora-RPC

DoraRPC is an RPC For the PHP MicroService by The Swoole
468 stars 101 forks source link

关于rpc的一个疑问 #26

Closed gouchaoer closed 7 years ago

gouchaoer commented 7 years ago

如果rpc是阻塞的,那么在等待rpc返回的这段时间里php进程就没有别的事可做就进程饥饿,就很难支持大qps了。。。就算使用的异步的httpclient如果有一个wait的过程那还是有进程饥饿,dora用的是swoole1。x版本吧,这个问题是如果解决的呢?

gouchaoer commented 7 years ago

swoole2。x的io函数本身有协程应该没这个问题

137-rick commented 7 years ago

dora是使用长连接tcp通讯的,下发任务的时候会生成一个标识符标识此次请求,在收到服务端返回的下发成功信息就继续做其他事情去了,并没有等待这个结果(仅限于客户单异步下发最后拿结果模式)。当服务端处理完毕返回给客户端的时候,客户端这是还没有执行接收,数据只是在客户端的缓存里面,客户端在发送其他请求给服务端的时候顺便把之前的任务结果拿回来扔到一个地方存放。还有一个函数,最后统一将所有下发过的连接扫描一遍,拿到所有的结果。用户调用接口的时候从数组中找到对应结果,发给用户

137-rick commented 7 years ago

协程版本,对于本次请求也是等待的……