论坛搜索了一番,了解到
gateway收到请求后是通过socket长连接异步非阻塞发送给worker的
问题1:常规而言,一个gateway进程,通常能维持多少连接呢?
问题2:这种异步非阻塞 跟 nginx 的那种异步非阻塞 是不是相同的机制,gateway收到请求后,转发给worker进程,不会一直阻塞等待worker进程返回结果,转而马上处理下一个请求,worker进程处理完毕后,会主动通知gateway进程,然后gateway进程 再把结果返回给客户端
问题3:gateway 与 worker 进程,每个进程里面,都是单线程的吗?
问题4:所有的业务,都在worker进程中处理,那么如果,其中一个请求,处理时间很长,这个时候,worker进程就会阻塞,直到把这个请求处理完毕之后,才会处理下一个请求吧?
总体而言,感觉跟 nginx & php-fpm 有点点类似,nginx 通过事件驱动机制,与 后端的 php-fpm 进行异步非阻塞通信,如果 php-fpm 处理一个请求,稍慢,就会阻塞下一个请求处理
以上,这样理解,不知道对不对,还劳烦老大指点一二,感激不尽
1、单个gateway进程可以维持上万的tcp连接
2、正确
3、每个进程里都是单线程
4、是的
理解很正确