Lift框架的彗星/反向ajax的可扩展性如何?

时间:2010-02-14 23:46:39

标签: java scala comet lift reverse-ajax

我最近学习了scala并即将开始工作/学习Lift框架。通过功能并开始使用框架,我看到了框架的一些惊人功能,包括反向ajax和彗星。在我的经验早期,对于从未缩放的反向ajax,我确实遇到了非常糟糕的经历。如果我为任何开发选择提升框架,这将是原因。我的问题是技术和产品的成熟程度以及在tomcat上使用lift的可扩展性有多大?与servlet规范3.0相比哪个更好用于此目的,等待servlet规范3.0或开始使用lift?

1 个答案:

答案 0 :(得分:13)

反向AJAX Comet。对于同样的事情,他们只是两个不同的名字。至于你问题的根源......

Lift的Comet支持的可扩展性很大程度上取决于servlet容器。你真的需要一个本机支持continuation的容器。 Jetty是我熟悉的,但我很确定还有其他人。通过在容器级别提供持续支持,您可以避免锁定每个客户端的线程,这是Comet的大部分可伸缩性问题源自的地方。

在可伸缩性的其他方面,Lift的CometActor是围绕具有活动长轮询的单个客户端的通用抽象。因为这个抽象是一个actor,所以它可以在现有的actor框架内处理(Scala stdlib for Lift 1.0.x,或者Lift actor on 2.0)。这也避免了线程扩展的问题,并确保挂起的更新将以有序的方式排队。

简而言之,Lift的Comet支持与Comet一样可扩展。当然,与该技术相关的固有开销。你永远不可能避免每个客户端至少提交一个套接字。但是,Lift(连同启用延续的容器)能够立即减轻任何非必要的开销。