`
t225com
  • 浏览: 659987 次
文章分类
社区版块
存档分类
最新评论

aio,epoll,libevent,boost::asio解决的问题

 
阅读更多

这几天一直在做linux大批量数据的解决方案,不断的深入了解了一下aio,epoll,libevent,boost::asio。以前只知道他们都是做异步/非阻塞的,但是具体解决的问题的关键点是什么,通过这几天的深入了解,把他们总结一下:

aiolinux2.6以后内核实现的异步IO,或者说他才是真正意义上的异步IO

<style type="text/css"> <!-- @page {margin:0.79in} p {margin-bottom:0.08in} --> </style>

epoll作为selectlinux的替代品,解决了selectfd_set的限制。性能优于select。而在max平台上替代方案是kqueue。

libevent是一个跨平台异步解决方案,他根据不同的平台提供了不同的异步方案,采用Reactor模型实现。

Boost::asio是一个跨平台的网络及底层IOC++编程库,实现了对TCPUDPICMP、串口的支持。对于读写方式,ASIO支持同步和异步两种方式。采用了epoll来实现,插入了大量的信号处理。Asio库不需要单独便于,但是测试过程中对boost::system的依赖可能会需要编译部分boost中的库。

muduo采用Reactor模型实现的网络库,只支持Linux 2.6.x下的并发非阻塞TCP网络编程,不跨平台,不支持udpipv6。吞吐量方面muduolibevent218%,在事件处理效率方面,muduolibevent2总体比较接近,muduo吞吐量比boost.asio15%以上。性能方面作为解决大数据吞吐量很有优势,但是对平台和网络协议支持方面是一个问题。

ACE也是很经典的网络库,出自《C++网络编程》作者之手,设计精妙程度堪称一流,支持协议范围也很广,但是使用复杂度和学习复杂度较高,一直有“学我者生,用我者死”的评价。

需要注意的是他们的定位不同,aioepoll主要是对异步提供解决方案不是网络库不提供网络支持,而libevent也是主要解决IO的问题只提供简单的http支持,asiomuduo还有ACE一样是高性能网络库。


分享到:
评论

相关推荐

    aio-cli-plugin-app:创建,构建和部署Cloud Native应用程序

    aio-cli-plugin-app 创建,构建和部署Adobe I / O应用用法$ aio plugins:install -g @adobe/aio-cli-plugin-app$ # OR$ aio discover -i$ aio app --help指令 aio app:add:service aio app:add:web-assets aio app:...

    aio-cli-plugin-runtime:适用于Adobe IO CLI的Adobe IO Runtime插件

    aio-cli-plugin-runtime 适用于Adobe I / O CLI的Adobe I / O Runtime插件用法$ aio plugins:install @adobe/aio-cli-plugin-runtime$ # OR$ aio discover -i$ aio runtime --help指令 aio runtime:action:get ...

    MAS AIO 2.2支持: Windows7/8/8.1/10/11 Windows Server/Office

    MAS AIO 2.2支持jihuo: Windows 7 / 8 / 8.1 / 10 / 11 Windows Server 2008 R2 / 2012 / 2012 R2 / 2016 / 2019 / 2022 Office 批量版本 2010 / 2013 / 2016 / 2019 / 2021

    libevent在MFC上的实现(工具:LibeventServer.exe)

    包括C&C++, C#, JAVA, GOLANG, ERLANG等居于IOCP, SELECT, POLL, EPOLL, KQUEUE, BIO, NIO, AIO, 并发语言等实现的同步或异步, 阻塞或非阻塞通信模型, 如:libevent, libev, libuv, netty, mina, ACE, boost等...

    p5-IO-AIO-Promiser:CPAN的IO

    use IO::AIO::Promiser ':all';my $cv = AnyEvent-&gt;condvar();aio_slurp("/etc/services", 0, 0)-&gt;then( sub { $cv-&gt;(@_) }, sub { $cv-&gt;croak(@_) },);print $cv-&gt;recv();它有点像 ,但是使用async / await而不是 ...

    aio-beanstalk:beantalkd 工作队列的异步客户端

    aio-豆茎aio-beanstalk 是 beanstalk 的异步客户端状态:低级协议已完全实现但未经过充分测试。 高层接口处于原型阶段。低级接口基本上它看起来像: import asynciofrom aiobeanstalk . proto import Client@ ...

    aio-cli-plugin-console:Adobe IO CLI的Adobe开发者控制台插件

    aio-cli-plugin-console 适用于Adobe I / O CLI的控制台集成插件 用法 $ aio plugins:install -g @adobe/aio-cli-plugin-console $ # OR $ aio discover -i $ aio console --help 指令 aio console:project:list ...

    联想超融合AIO LVD云桌面解决方案x_数据融合需要解决什么问题

    联想超融合AIO LVD云桌面整体解决方案,联想超融合AIO解决方案 联想超融合LVD解决方案 联想云桌面部署解决方案 联想超融合整体解决方案 联想云解决方案云南总代理

    AIO-BEO:自动化,集成和编排,以实现更好的工程运营

    AIO-BEO 如何使用Mocha通过Monitor API或Newman Javascript库执行Postman Collections。资源检索ID 收藏 监视器环境变量API密钥-PM_API_KEY 集合ID-PM_COLLECTION_ID 监视器ID-PM_MONITOR_ID本地执行npm install...

    脱壳工具 Unpacker AIO Tool

    [脱壳工具] Unpacker AIO Tool 使用说明: 直接拖放到窗口,选择相应的保护模式 点击unpack 即可

    EPOLL模型详解

    但是epoll不存在这个问题,它只会对"活跃"的socket进行 操作---这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有"活跃"的socket才会主动的去调用 callback函数,其他idle状态socket则...

    AIO搜索「AIO Search」-crx插件

    AIO Search是一个方便的Chrome扩展程序,可为您提供增强的工具栏,用于按类别在网络上搜索,并通过www.aiosearch.com网站在一页的标签中显示结果。您可以搜索按类别分组的多个搜索引擎。所有类别和引擎都可以通过...

    All In One(AIO) V1.0

    这是一个将很多小工具功能集成一体的一个"工具". 功能: ...用法:Aio.exe -AutoRun 2.Clone -&gt; 克隆帐户 ...build 04/01/2006这版本因为编译时参数问题,syn扫描什么都扫不到,但build 06/10/2006版本已修正.

    linux网络编程之 epoll简介

    编写连接数巨大的高负载服务器程序时,经典的多线程模式和 select模式都不再适 用。应当抛弃它们,采用 epoll/kqueue/dev_poll 来捕获 I/O 事件。最后简要介绍了 AIO。 --------- from 搜狗实验室

    AIO-Boot:AIO Boot是用于USB和HDD的多合一可启动软件。 是Windows上最好的Multiboot USB Creator之一

    AIO-Boot:AIO Boot是用于USB和HDD的多合一可启动软件。 是Windows上最好的Multiboot USB Creator之一

    aio-switch-updater:多合一Nintendo Switch更新器

    aio-switch-updater:多合一Nintendo Switch更新器

    livevent在MFC上的实现

    包括C&C++, C#, JAVA, GOLANG, ERLANG等居于IOCP, SELECT, POLL, EPOLL, KQUEUE, BIO, NIO, AIO, 并发语言等实现的同步或异步, 阻塞或非阻塞通信模型, 如:libevent, libev, libuv, netty, mina, ACE, boost等...

    linux epoll模型

    在这里最重要的莫过于select模型和Asynchronous I/O模型。从理论上说,AIO似乎是最高效的,你的IO操作可以立即返回,然后等待os告诉你IO操作完成。... 最终,Davide Libenzi开发的epoll进入2.6内核成为正式的解决方案。

    一个基于boost.aio实现的自定义协议格式的网络通信框架.rar

    使用可交换的网络传输模块,包括 C++ iostreams 和 Boost Asio。 主要特性: 完全支持RFC6455 部分支持Hixie 76/Hybi 00,07-17规格草案(仅服务器) 基于消息/事件的界面 支持安全的WebSocket(TLS),IPv6和显式...

    aio-pika:专为异步和人类设计的AMQP 0.9客户端

    艾奥皮卡 围绕的包装,用于asyncio和人类...4 透明的支持支持 安装pip install aio-pika 用法示例简单的消费者: import asyncioimport aio_pikaasync def main ( loop ): connection = await aio_pika . connect_robus

Global site tag (gtag.js) - Google Analytics