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 阻塞问题。视频内容如下:
算是一个关于 Eventmachine 的扫盲,如果你从没听过 Eventmachine,那么推荐你看一下,至少看一下前 20 分钟,API 的地方可以不看。
如果你对 Eventmachine 感兴趣,你还可以去看一下 Celluloid 项目,该项目是基于 Erlang 的 Actor 模型的并发库,通过 Fiber 模拟 Erlang 的 Actor,可以算是 Erlang Actor 的 Ruby 实现。