为什么不采用多线程模型管理连接?
(1)无状态服务,没有必要进行共享进程内存
(2)采用独立的进程,可以让互相之间不会影响。一个进程异常崩溃,其它进程的服务不会中断,提升了价格的可靠性
(3)进程之间不共享资源,不需要加锁,所以省掉了锁带来的开销
为什么不采用多线程处理逻辑业务?
(1)进程数已经等于核心数,再新建线程处理任务,只会抢占现有进程,增加切换代价
(2)作为接入层,基本上都是数据转发业务,网络IO任务的等待耗时部分,已经被处理为非阻塞,全异步,事件驱动模式,在没有更多cpu的情况下,再利用多线程处理,意义不大
并且,如果进程中有阻塞的处理逻辑,应该由各个业务进行解决,比如OpenResty中利用了lua协程,对阻塞业务进行了优化