对付高并发一般无外乎多进程/线程和事件驱动两种模型
多进程/线程受限制比较多:进程/线程数,创建/删除/切换开销,都是瓶颈,进程/线程数量多时会导致cpu大量消耗在切换上无法提高并发性能,数量少又无法提供高并发处理。它的优点在于可以单独使用阻塞式IO,编程模型比较简单,而且用多进程还有一个好处,一个进程core掉了不影响其他进程。因此,这种方法其实是无法提供很好的并发处理性能的,大约极限在1000qps左右
事件驱动模型可以提高很高的并发,并且在并发数提高到很高的情况下,性能也不会有明显的下降。但是这种模型的缺点在于无法利用多核提供的并发处理性能,如果16core的情况下,cpu浪费情况很严重。极限大约在10000量级
因此将两者结合起来就变得非常可行,利用多线程提供多核并发,利用event-driven提供单核高并发处理,可以达到极限的高并发处理性能。这样就会引入一个问题:线程数如何确定。基本方法可以在已经建立好event-driven模型的程序中逐渐增加threadnum,观察其并发数,直到出现并发性能下降为止。
--
With regards
没有评论:
发表评论