2010-02-14 26 views
11

我最近學習了scala並即將開始工作/學習Lift框架。通過功能並開始使用框架,我看到了框架的一些驚人功能,包括反向ajax和彗星。根據我的經驗,之前對於從未縮放過的反向ajax的體驗確實非常糟糕。如果我爲任何開發選擇升降架構,這將是原因。我的問題是技術和產品有多成熟,在tomcat上使用lift有多大的可擴展性?與servlet spec 3.0比較,哪一個更適合這種用途,請等待servlet spec 3.0或者開始使用lift?Lift框架的comet/reverse ajax可伸縮性如何?

回答

13

反向AJAX 彗星。對於同一件事他們只是兩個不同的名字。至於你的問題的根源...

Lift的Comet支持的可擴展性在很大程度上取決於servlet容器。你確實需要一個本地支持延續的容器。碼頭是我熟悉的,但我很確定有其他人。通過在容器級別提供持續支持,您可以避免鎖定每個客戶端,這是Comet的大多數可伸縮性問題的源頭。

在其他可擴展性領域,Lift的CometActor是圍繞單個客戶端進行的通用抽象,具有活動的長時間輪詢。因爲這個抽象是一個actor,所以可以在現有的actor框架(Lift 1.0.x的Scala stdlib或2.0的Lift actors)中處理。這也避免了線程擴展的問題,並確保掛起的更新將以有序的方式排隊。

總之,Lift的Comet支持與Comet的可擴展性差不多。當然有與該技術相關的固有開銷。您永遠無法避免爲每個客戶端提交至少一個套接字。但是,Lift(以及啓用容器的容器)能夠減輕開箱即用的任何非必要開銷。