单机高性能网络模型
传统网络模型
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支持不成熟;程序调试复杂
网络模型对比
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性