网络编程大并发实战-IO框架介绍

根据前面的几个模型我们来看看以前都有哪些的IO框架服务器,当然我们也会给我们当前的一些服务器归类下。主要就分成3类:封装的TCP/IP的通信框架,再此基础上进行http接入代理的服务器,还有一类就是带上应用功能的应用容器。我们主要讲解下前面两类。

IO通信框架

主要就是根据BIO,NIO,AIO这样的一个历程呢,IO通信框架也在不断的发展优化。

http服务器

apache

这是个典型的 一个连接一个进程的并发模型的web服务器,在并发少的时候,其性能不错,但是当连接增大的时候,就会处理不过来了,比如C10K。当然即使是现在,操作C10K,C1M的还是少数,所以大多数web服务器使用apache 也还是能好好的用着的,毕竟不是每个企业都像淘宝谷歌一样有这样打的用户数基础。

nginx

这个就是典型的 IO复用+多进程/多线程的代表,nginx的出现就可以比较完美的解决了C10K的问题,目前一般还是应用成多进程比较多,多线程的方式也可以,据说没多进程稳定。

以上是现今主流的http服务器,还有一些非常适合学习的http服务器如下:Tinyhttpd,lighttpd,

这类web服务可以进行反向代理,静态资源获取,甚至负载均衡处理。但是还缺少一种能力就是,动态资源生成。这样就需要下面应用容器出场。

应用服务器(容器)

tomcat/Jetty

这类都是应用容器,用于处理动态应答数据的。当然应用容器不止这些,但是我们只举了当下比较流行的JAVA 运行时下的基于serlet的http应用容器。

 

以上举例的都是web服务器方面的,而真正可以脱离上层限制的的比较接近底层的就是 IO通信框架了,他们可以作为上述两类服务器的IO通信基础,也可以作为应用分布式中间件互联的高性能通信基础。

IO通信框架

这个使用选择得就会比上述连个服务器类型多得很多,对于JAVA运行时来说,netty以及mina都是非常不错的。现今都是已NIO为基础实现,甚至支持AIO。

当然对于C/C++来说,这种偏底层的东西种类会更加繁多:libeventBoost.AsiolibcurlZeroMQ

 

 

说完这些,接下来就要进入实战阶段了,想想还是有些小期待,小兴奋。