2011-07-15 26 views
3

我最近發現了lift框架,並且已經讀到它是有狀態的。升級在Lift Framework上運行的應用程序?

因此,如果我有一個運行在Lift上的高流量網站 - 說運行一個需要用戶登錄的聊天應用程序的東西 - 並且我想升級我的應用程序,這樣做會將所有人都踢出聊天室並讓他們必須再次登錄?

回答

2

以前的答案都不正確。 LiftSession內部的許多文物都是不可以被系統化的,所以不能被塞進數據庫。您有兩種選擇來執行有狀態應用程序的滾動升級:

1)會話流血。基本上,你會讓其中一個部署會話離開,直到他們的會話結束或X持續時間過去,然後從生產中移除應用程序,同時自動將流量重新路由到另一個Lift實例。谷歌周圍使用HAProxy進行滾動升級,因爲這應該從集羣的角度來幫助你。 2)如果你的狀態非常簡單(主要是原始類型:int,字符串等),那麼你可以考慮使用ContainerVar/MigratableSession並使用兵馬俑或類似的方法對狀態進行聚類。這帶有一系列限制,因爲它使用HTTPSession而不是LiftSession。

您可能需要結賬Lift in Action的第15章,其中詳細介紹了後一種解決方案。

+1

大聲笑,爲什麼這次被拒絕?如果它不是你想要的,請發表評論,澄清你不喜歡或不理解的內容。 – timothy

+0

不是我投下來的。謝謝 - 這更像我之後的事情,而不僅僅是在數據庫中擁有東西。 –

1

如果將狀態保存在內存中並重新部署Web應用程序,該狀態將會丟失。您可以在重新部署前將其保存到數據庫或文件中,然後從中讀回。

+0

是否有一個具體的方式來做到這一點與電梯,如序列化一個對象,或者我必須自己實現這個? –

+0

當然如果你想要去數據庫路由和Java提供各種持久性選項,但是沒有專門解決這個問題的內置機制afaik,那麼lift將帶有映射器和記錄。 –

相關問題