NeverBlock 是一个使用 Ruby 纤程进行异步数据库访问的库。在此之前,对纤程的使用意味着 NeverBlock 只能在 Ruby 1.9 上运行。新发布的NeverBlock 使用纤程功能的修回版本(backport)以解决这个问题。Aman Gupta 最近发布了一个叫做“Poor Man’s Fibers”的基于Ruby 线程的纤程实现(在NeverBlock Github 存储库中的纤程实现)。
使用线程模拟纤程通常占用更多的资源,带来跟多内存使用和调度开销。但是,NeverBlock 池化使用(pool)纤程,这样应该能限制修回版本在性能上带来的冲击。JRuby 使用了一个类似的方法来为其Ruby 1.9 支持提供纤程( GitHub 资料库中 JRuby 的纤程实现)。JRuby 的纤程实现也将纤程映射为线程,与“Poor Man’s Fibers”具有相似的性能特点。NeverBlock 的创始人之一—— Muhammed 比较了纤程的开销和线程的开销,发现 Ruby 1.9 的纤程耗费少得多的内存,而创建速度也快得多。
NeverBlock 新版本的另一个特性是它内建对 Rails 的支持
端到端的对 Ruby and Rails 框架的无缝支持。像增加一行到 database.yml 文件和增加两行到 environment.rb 文件一样容易添加对 Rails 的支持。
链接文章包含更多关于添加对不同服务器和数据库支持的信息。纤程引发更多关注, Ruby 1.9.1 趋于稳定,您是否已经考虑使用使用纤程?
查看英文原文: Fibers Roundup: NeverBlock Now Rails Compatible, “Poor Man’s” Fibers For 1.8
评论