Play 框架可擴充套件性的一些疑問

2021-09-01 09:42:28 字數 574 閱讀 4397

最近在研究如何將membase nosql應用到play! 框架中,需求主要是為了將一些使用者狀態,比如登入狀態、頁面操作狀態等快取起來。

眾所周知,play!是乙個無狀態的框架,意思就是play!沒有session!但是使用過play!的朋友一定知道play!的control裡面是有乙個session的,別急,這個session實際上並不是我們真正意義上的瀏覽器session,而是cookie哦!要理解這點,需要我們開啟play!的原始碼:

上面的**很明顯的看出,play!的session操作實際上就是對cookie的操作。

但是對於我來說很不幸的事情並不是這點,而是play!的session是乙個靜態類!並且還是scope裡面的乙個子類,這意味著我無法很輕易的替換它,除非修改這個類的原始碼。

這樣我非常還唸基於介面的程式設計,如果session是乙個介面,而不是乙個靜態類,那麼我就可以實現乙個基於session介面的實現類,用於替換這個session類,這樣的話,我就能將對membase的操作封裝在session中,可以做到很靈活的擴充套件。

也許從中我們可以看出,play!在強調敏捷性的同時,失去了一定的靈活性,又或者,我對play!的了解還不夠深入吧。

Flume的可擴充套件性

flume的可擴充套件性 flume採用了三層架構,分別為agent,collector和storage,每一層均可以水平擴充套件。其中,所有agent和 collector由master統一管理,這使得系統容易監控和維護,且master允許有多個 使用zookeeper進行管理和負載均衡 這就避 ...

Flume的可擴充套件性

flume的可擴充套件性 flume採用了三層架構,分別為agent,collector和storage,每一層均可以水平擴充套件。其中,所有agent和 collector由master統一管理,這使得系統容易監控和維護,且master允許有多個 使用zookeeper進行管理和負載均衡 這就避 ...

系統的可擴充套件性

到底什麼是可擴充套件性?這年頭,作為軟體設計架構師如果系統沒有可擴充套件性對外交流時都不好意思。但是如何選擇可擴充套件性方案?水平擴充套件還是垂直擴充套件?是不是很矛盾呢,本文為你分析可擴充套件性的真實含義和實際專案中的取捨。每每和別人提及可擴充套件性的含義時,很多人開始討論提高效能,實施高可用性,...