baidu / sofa-pbrpc

A light-weight RPC implement of google protobuf RPC framework.
Other
2.13k stars 655 forks source link

sofa server是否支持异步处理请求 #173

Closed fengyindiehun closed 7 years ago

fengyindiehun commented 7 years ago

业务场景如下:server端对每个请求都需要通过http调用第三方服务,平均响应时间为50ms 如果server端线程数设置为1的话是否qps极限约为20,server端线程数设置为32的话,qps极限约为32 * 20? sofa是否有某种机制对每个请求进行异步处理,不阻塞当前工作线程的执行?

qinzuoyan commented 7 years ago

我的理解: 1. 每个请求要通过http调用第三方服务,从你的描述来看,使用的是同步调用,平均响应时间是50ms;这段时间工作线程是被阻塞的;因此你的计算没有问题,qps极限为 work_count * (1 / http_delay);对于同步调用来说,除了增加线程数,没有别的办法; 2. 要提高吞吐,且不依赖于工作线程数,那就要用http的异步调用;但是这里的异步调用与sofa-pbrpc框架本身已经没有什么关系了,只不过异步调用动作是在sofa-pbrpc的工作线程中发起的;

  1. 那么你需要的就是:找一个异步的http库。

2016-12-27 18:00 GMT+08:00 BP notifications@github.com:

业务场景如下:server端对每个请求都需要通过http调用第三方服务,平均响应时间为50ms 如果server端线程数设置为1的话是否qps极限约为20,server端线程数设置为32的话,qps极限约为32 * 20? sofa是否有某种机制对每个请求进行异步处理,不阻塞当前工作线程的执行?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/baidu/sofa-pbrpc/issues/173, or mute the thread https://github.com/notifications/unsubscribe-auth/AAgQPd4zk6A4d0uX3EFQ-S3q_3QkmqKSks5rMOHagaJpZM4LWKoa .

fengyindiehun commented 7 years ago

@qinzuoyan 由于业务场景的特殊性,对每个 http 请求 server 端都需要对请求第三方的结果进行汇总并分析,并将分析结果返回给 client,所以即使采用异步 http 库,sofa server 也必须 hold 住当前请求。不知道我的理解有没有误

cyshi commented 7 years ago

听你的描述 觉得和sofa server已经没有关系了 系统吞吐取决于第三方的http服务