技术分享《一个异步io调度框架的实现》

今下午在公司内部做了高端话题的分享,话题是异步io调度器是怎么实现的. 另外结合socket服务器又该如何调度处理? 这次的PPT写的有些简略,但基本说明了构建异步io框架的基本元素。 

这次的分享由来是什么? 我前端时间一直再写一个调度器,类似于gevent那种,但中间遇到了不少的问题,比如信号事件化,定时器触发事件化。  真正的下手去实现的时候,会发现自己忽略了众多的细节,我花了将近一个月的事件去造一个调度器的轮子,虽然最后实现的很是不雅,但中间的学习过程,真心很受益 。 发现自己越来越迷失在高性能并发的场景应用了。 O(∩_∩)O~  可恨的是没有场景让我具体去测试。


另外,我发现很多朋友张口异步,闭口非阻塞的,天天说tornado怎么牛逼,node.js回调是如何销魂,gevent是如何让人舒服。。。 但问题是很多人都将不明白异步非阻塞的本质到底是什么?  什么是阻塞,为什么会阻塞,怎么怎西是哪里阻塞,怎么避免阻塞.    当然我那些变态源码同事还是很强大的,他们对于tornado的源码算是吃透了。 但是,他们对于系统的io调度器实现,还是有点朦胧的感觉。所以,这次分享更加侧重于软实战的感觉。


内容点:
    socket技术实现

    长连接 vs 短连接

    忙轮询 vs io多路复用

    select vs epoll区别
    边缘触发 vs 水平触发
    上下文那点事
    场景的高并发网络模型

    协程跟连接池的关系
    libevent、libev
    怎么写io调度器
    怎么写非阻塞客户端

    回调函数的实现
    定时器的实现

    …

该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新. http://xiaorui.cc/?p=3377

我把PPT扔到slideshare了,如果看不到ppt内容的朋友,可以自行翻墙或者 下载pdf版本.


PDF地址:

http://xiaorui.cc/async_frame.pdf

源地址:

http://www.slideshare.net/rfyiamcool/async-io-frame


async io frame from rfyiamcool

异步io框架的实现 from rfyiamcool

END.


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc

1 Response

  1. cs 2016年5月24日 / 上午7:52

    感觉到干货了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">