单机高性能网络模型

传统网络模型

  PPC和prefork

    简单

    fork代价高 性能低、父子进程通信要用IPC 监控统计等实现起来会比较复杂、OS上线问切换会限制上线文连接数 一般为几百

    TPC和prethread

    实现简单、无需IPC线程间通信即可、无需fork创建线程代价低

    线程互斥和共享比ppc更复杂、某个线程异常可能造成整个进程退出、OS上线问切换会限制上线文连接数 一般为几百 但是高于PPC

  

reactor网络模型  基于多路复用的事件响应网络编程模型

  多路复用:多个连接复用同一个阻塞对象

  事件响应:不同的事件分发给不同的对象处理

  实现比传统网络模型复杂

  支持海量连接

 

  单reactor 单进程/单线程

    实现简单 无进程通信 无线程通信和互斥;无上下文切换,某些场景下性能可以做到很高

    单进程无法发挥多核cpu性能,只能部署多个系统利用cpu,但是会增加运维复杂度;Handler在处理某个连接上的业务时,整个进程无法处理其他连接的事件,可能导致性能瓶颈

  单reactor 多线程

    充分利用多核cpu的优势 性能高

    多线程数据共享和访问比较复杂;reactor承担所有事件的监听和响应,只能在主线程中运行,瞬时高并发可能成为性能瓶颈

  多 Reactor 多进程/线程

    充分利用多核CPU的优势,性能高;实现简单,父子进程(线程)交互简单subReactor子进程(线程)之间无互斥共享或通信

    没有明显缺点,只是相对复杂

    

proactor网络模型

  理论性能上要比reactor性能高,实测差别不大 10%

  操作系统实现复杂,linux支持不成熟;程序调试复杂

网络模型对比

 

 

posted on 2022-12-08 19:09  李某人的窥视  阅读(21)  评论(0编辑  收藏  举报

导航