swoole高并发如何实现?我看过相关的文档,master进程里的reactor线程是io复用的,异步非阻塞,这边并发量不会是问题,问题是reactor线程将数据发给worker进程,虽然reactor可以处理高并发,但是worker线程不可以,这边应该会成为瓶颈?一个worker同一个时刻只能处理一个连接请求?假设一个请求100ms,一个worker也就10qps,这样是如何实现高并发的呢
2 回答
九州编程
TA贡献1785条经验 获得超4个赞
你说的是阻塞模型下的worker,是这么计算,上个请求没处理完时下一个请求无法处理。如果是非阻塞IO的情况下,接收请求后放入epoll中,就去处理下一个请求了。如果当前请求处理完毕,通过response对象发送响应结束处理。
忽然笑
TA贡献1806条经验 获得超5个赞
比如你有一个接口,这个接口去查数据库,返回结果需要一定时间,如需要100ms返回结果这时候有两个请求进来先处理第一个请求,与数据库通信,告诉数据库你要查询的语句,在等待返回数据这100ms期间协程挂起这时候开始处理第二个请求,同样的等待数据库返回结果前,这第二个协程也是挂起的哪一个请求的数据库返回结果先回,那就继续执行那个协程这种I/O密集型场景,协程非常合适
添加回答
举报
0/150
提交
取消