【问题标题】:How scalable is the Lift framework's comet/reverse ajax?Lift 框架的 comet/reverse ajax 的可扩展性如何?
【发布时间】:2011-01-16 19:51:38
【问题描述】:
我最近学习了 scala,即将开始工作/学习 Lift 框架。浏览功能并开始使用该框架,我看到了该框架的一些惊人功能,包括反向 ajax 和 Comet。在我的早期经验中,我对从未扩展的反向 ajax 的体验非常糟糕。如果我为任何开发选择提升框架,这就是原因。我的问题是技术和产品有多成熟,在 tomcat 上使用 lift 的可扩展性有多大?与 servlet spec 3.0 相比,哪一个更好,等待 servlet spec 3.0 还是开始使用 lift?
【问题讨论】:
标签:
java
scala
comet
lift
reverse-ajax
【解决方案1】:
反向 AJAX 是彗星。它们只是同一事物的两个不同名称。至于你问题的根源……
Lift 的 Comet 支持的可扩展性很大程度上取决于 servlet 容器。你真的需要一个原生支持延续的容器。码头是我熟悉的,但我很确定还有其他的。通过在容器级别获得持续支持,您可以避免锁定每个客户端的线程,这是 Comet 的大多数可扩展性问题的根源。
在可扩展性的其他领域,Lift 的CometActor 是围绕具有活动长轮询的单个客户端的通用抽象。因为这个抽象是一个actor,它可以在现有的actor框架中处理(Scala stdlib for Lift 1.0.x,或 Lift actor 2.0)。这也避免了线程扩展的问题,并确保待处理的更新以有序的方式排队。
简而言之,Lift 的 Comet 支持与 Comet 一样具有可扩展性。当然,有与该技术相关的内在开销。您将永远无法避免为每个客户端提交至少一个套接字。但是,Lift(以及启用了 continuation 的容器)能够立即减少任何不必要的开销。