分享 @tmm1 教你 Eventmachine

willmouse · 2013年08月08日 · 最后由 debugger 回复于 2013年08月13日 · 6358 次阅读

http://confreaks.com/videos/19-mwrc2010-eventmachine

@tmm1(Aman Gupta)可能很多人并不认识,不过这个头像你可能有点似曾相识,@tmm1是 Github 的员工,主要负责性能调优以及 debug 等底层工作。Github 从 Ruby 1.8 迁移到 1.9 时@tmm1是最大的功臣。

@tmm1有很多开源的项目,大部分都和 Ruby 的调试、性能优化有关,其他的也有像 pygments.rb 这样的 Wrapper 库,还有就是 Eventmachine。@tmm1不是 Eventmachine 的原作者,但是最近五年的 Maintainer 都是他,所以能把 Eventmachine 说的最清楚的除了他也没有其他人了。

Eventmachine 是 Reactor 模式在 Ruby 下的实现(Python 的实现为 Twiested,nodejs 为 libuv),是一种基于回调的编程模式,通过异步代替同步,来解决 Web 中遇到的 IO 阻塞问题。视频内容如下:

  • Reactor 模式
  • Eventmachine 的工作原理
  • Eventmachine 的 API
  • 一个基于 Eventmachine 的 Chatroom 展示

算是一个关于 Eventmachine 的扫盲,如果你从没听过 Eventmachine,那么推荐你看一下,至少看一下前 20 分钟,API 的地方可以不看。

如果你对 Eventmachine 感兴趣,你还可以去看一下 Celluloid 项目,该项目是基于 Erlang 的 Actor 模型的并发库,通过 Fiber 模拟 Erlang 的 Actor,可以算是 Erlang Actor 的 Ruby 实现。

https://github.com/celluloid/celluloid

LZ 的分享都是高质量的啊

异步代码不好维护

谢谢楼主分享,一如既往的高质量!

#5 楼 @ruby_sky 第一个是 Tony Arcieri 在开发 Celluloid 以前的项目,Celluloid 算是它的升级版

敢问楼主是不是打算把 Confreaks 从头到尾撸一遍?

Thank LZ. :)

#7 楼 @nightire 很明显我是挑着发的。

#9 楼 @willmouse 是呀,你要挑着发,而且发的都是很有看头的,那就是说明你都看过了呗?我就是对你这种精神崇拜不已啊~~~请问看了多少了?

我也曾经撸过,连着看两三部之后就开始打瞌睡了……

#10 楼 @nightire 吃饭的时候看看,跑完步洗完澡看看,就当看美剧了,每天看一场就有种在看日更的美剧一样,而且 Confreaks 很多场次都提供了下载,下下来看还是比较舒服的。

#11 楼 @willmouse 嗯,说的没错,我就是太贪心,一次下一个会议的,想一口气看完,结果没看一半就困得不行了,呵呵。

BTW,吃饭的时候少看,以前没觉着,现在发现吃饭看东西(视频、书、代码等等)会严重影响食欲。

#11 楼 @willmouse 居然还有 Confreaks 这样的好东西。多谢。。

不知道关于 Linux 时候还有这种好网站?

今天刚做了个 sidekiq 和 celluloid 的讲座……

celluloid 也有个视频,confreaks 上的~ http://www.confreaks.com/videos/1302-rubyconf2012-the-celluloid-ecosystem

matz 那书上说 erlang 是尽量的利用多核 cpu,revactor 并不适合这种目的,优点是等待文件输入输出的将程序控制在最小的程度。一直没怎么彻底的理解。

sqsy 整理学习 EventMachine 的一些文章和帖子 提及了此话题。 09月08日 17:05
需要 登录 后方可回复, 如果你还没有账号请 注册新账号