打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
网络编程模型综述 之 成熟的IO框架介绍

ACE

“重量级的C I/O框架,用面向对象实现了一些I/O策略和其它有用的东西,特别是它的Reactor是用OO方式处理非阻塞I/O,而Proactor是用OO方式处理异步I/O( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor is an OO way of doing asynchronous I/O).

从很多实际使用来看,ACE是一个很值得学习的网络框架,但由于它过于重量级,导致使用起来并不方便。

ACE中提出了两种网络模式:ProactorReactor

ASIO

C I/O框架,逐渐成为Boost库的一部分。it’s like ACE updated for the STL era。”

支持selectepollIOCPIO模型;

libevent

Niels ProvosC编写的一个轻量级的I/O框架。它支持kqueueselectpollepoll

1.4.11版还不支持windowsIOCP,但已经有很多开发者自己修改源码,把IOCP合并进去。

C10K问题与解决之道

         一台服务器如何同时处理一万个以上的客户端,这就是著名的C10K问题;这个问题曾经困扰过很多服务器的架构师,但这种困扰随着时间的推移早已成为了过去。

         网络的众多模型中,有些适合简单处理,有些适合复杂应用,而C10K问题考验的则是网络框架的并发和大连接处理能力,异步I/O虽然也是为并发和大连接设计,但目前aio并不支持socket,所以目前最适合的解决方案是I/O复用。

         I/O复用最初在解决C10K问题时也并不出色,随着连接数的增加,处理单个socket请求所花费的事件也迅速增加,但kqueueepoll的出世后,I/O复用成为了C10K问题的首选方案,下图是libevent给出的测试数据:

     

从图中可以看出,selectpoll随着需要处理的连接数(横轴)增多,处理单个连接的时间明显变长,而epollkqueue的表现则非常优秀。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UDP笔记 第四部分 续和转载(2)—— UNIX 网络高级I/O模型
开源C/C++网络库比较
再谈select, iocp, epoll,kqueue及各种I/O复用机制
EPOLL和IOCP比较
那些年我们追过的网络库(PartI)
socket 模型简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服