高性能网络通讯原理
目录 高性能网络通讯原理 前言 I/O访问 I/O模型 同步阻塞 select模型/poll模型 epoll模型 异步I/O模型 I/O线程模型 Reactor模型 Proactor模型 总结 参考文档 高性能网络通讯原理 前言 本来想对netty的源码进行学习和探究,但是在写netty之前许多底层的知识和原理性的东西理解清楚,那么对学习网络通讯框架的效果则会事半功倍。 本篇主要探讨高性能网络通讯框架的一些必要知识和底层操作系统相关的原理。在探讨如何做之前,我们先讨论下为什么要做。 随着互联网的高速发展,用户量呈指数形式递增,从原来的PC普及到现在的移动设备普及。用户量都是千万甚至亿为单位计算,尤其是实时通讯软件,在线实时互动的应用出现,在线用户数从原来的几十上百到后来的上万甚至上千万。单台服务的性能瓶颈和网络通讯瓶颈慢慢呈现。应用架构从单应用到应用数据分离,再到分布式集群高可用架构。单台服务的性能不足可以通过构建服务集群的方式水平扩展,应用性能瓶颈被很好的解决。但是横向扩展带来了直接的经济成本。 一个高性能的网络通讯框架从硬件设备到操作系统内核以及用户模式都需要精心设计。从底层的I/O访问,到操作系统内核的I/O模型,线程调度以及用户框架都需要精心设计,只要有任何地方有疏漏都会出现短板效应。 I/O访问 当我们在读取socket数据时,虽然我们在代码仅仅是调用了一个 Read