Unicorn 是一个 Ruby 的 HTTP 服务器,支持 Rack 和 Mongrel,Thin 类似,支持所有 Rack Application。Unicorn 用了 Mongrel's Ragel HTTP paser,不同的体现在架构和设计理念上。Mongrel 使用 thread,mongrel daemon 接收到 HTTP 请求后,启动线程处理请求,Unicorn 则使用线程模型,用 pre-fork 提高性能。有兴趣的可以读这篇:I like Unicorn because it's Unix。
Passenger 是一个 Rails 应用服务的管理工具,可以统一管理 Rails 进程的数量、生命周期、请求队列等等。
thin 是个合成品,分别使用了来自 mongrel 的解析器,Every Machine 的网络 IO 库,Rack 的 web 服务器和 Ruby 框架的接口。 也就是说 thin 有 mongrel 的速度和安全性,有 Every Machine 的高伸缩性,性能和稳定性。
但是他们究竟有什么不一样了? 什么时候我们该选择什么?为什么呢?我找了好久都没有找到答案,更多的就是说 unicorn 好,但是好在哪里是否有很多在使用着的人也不知道呢?
可否有那么高人为我们指点江山!