Swiftcore Swiftiply 的 Mongrel 支持介绍

Swiftiply倾向运行于一种特定模式之中,这种模式与后端应用进程保持有持久连接。由于大多数Ruby web框架并没有原生的支持这一点,但是对于Mongrel的操作却有所支持。Swiftiply捆绑有Mongrel 1.0.1的一个补丁版本,这个版本是可以保持持久连接的。与常备的 Mongrel 1.0.1一样,它运行了所有Mongrel 1.0.1运行的程序逻辑,因此它与其内在兼容。迄今为止,它与IOWA, Rails, Camping, Merb, 和Ramaze (使用的是 Rack)都测试过了。

作为该版本Mongrel的一个分支,Swiftiply还具有Mongrel的第二个版本,这个版本设计运行于事件驱动的方式,用EventMachine,而不是采用线程模式。同样,它也是与现有的Mongrel程序内在兼容(也与IOWA, Rails, Camping, Merb, 和 Ramaze测试过了)。对很多应用来说,这会提供更好的请求处理吞吐量,特别是在有并发请求的时候。

这是因为基于事件的操作可以很有效的处理请求,它是基于先来先服务的模式,没有线程的开销。对于典型的Rails应用,这意味着请求处理可能比线程级的Mongrel要稍快一点,因为Mongrel每个线程都要处理单独的非并发的请求。不过,如果有并发请求,二者区别会迅速扩大。可以看看基准测试程序数值 对其中的差别有所感性的认识。

两个版本的Mongrel都是针对Mongrel 1.0.1打补丁实现的。要想使用其中任何一个版本,只需require相应的库。对于swiftiplied_mongrel,这应该是

1 require "swiftcore/swiftiplied_mongrel"

而对 evented_mongrel,这应该是

view source
print ?
1 require "swiftcore/evented_mongrel

你可能感兴趣的:(线程,并发,应用,补丁,web框架)