優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利

利用分布式緩存存放狀態(tài)

在系統中存儲會(huì )話(huà)數據時(shí),使用分布式緩存。適用于任何需要存儲會(huì )話(huà)數據但又不能將其存放在用戶(hù)瀏覽器中的情況。小心一些常見(jiàn)的錯誤,如會(huì )話(huà)管理系統要求關(guān)聯(lián)用戶(hù)和Web服務(wù)器。

認真考慮如何存儲會(huì )話(huà)數據可以確保系統能夠持續擴展。許多Web服務(wù)器或語(yǔ)言都提供了簡(jiǎn)單的基于服務(wù)器的會(huì )話(huà)管理方法,但這些方法通常有一些問(wèn)題,例如把用戶(hù)關(guān)聯(lián)到了特定的服務(wù)器。實(shí)現分布式緩存,就可以在系統中存放會(huì )話(huà)數據,使系統能夠持續擴展。



在你得出需要在應用或系統中維護狀態(tài),以及確定不能把狀態(tài)存放在最終用戶(hù)的瀏覽器上的結論之前,我們希望你花時(shí)間認真考慮一下推薦的流程。你應該為此決定感到難過(guò),為自己不能想辦法開(kāi)發(fā)出無(wú)狀態(tài)的系統或者不能讓最終用戶(hù)維護狀態(tài)而感到羞愧。

當然,這是在開(kāi)玩笑,因為我們已經(jīng)承認,的確有些系統必須維護狀態(tài),即便是很少量的狀態(tài),而且這些狀態(tài)最好是在服務(wù)、應用或產(chǎn)的基礎設施中維護??紤]到這一點(diǎn),我們來(lái)討論幾個(gè)在應用中維護狀態(tài)的原則。

第一,也是最重要的,遠離那些要求關(guān)聯(lián)到一個(gè)應用或Web服務(wù)器的有狀態(tài)系統。這種實(shí)現的可用性比那些可以遠程訪(fǎng)問(wèn)任何服務(wù)器上的狀態(tài)的實(shí)現低。如果關(guān)聯(lián)的服務(wù)器死機了,那么這臺服務(wù)器上的所有會(huì )話(huà)信息(包括狀態(tài))都會(huì )失效,相關(guān)的客戶(hù)(很可能是幾千個(gè))就需要重復他們的操作。即使把數據存放在了本地或網(wǎng)絡(luò )存儲上,用戶(hù)也需要在另一臺服務(wù)器上從頭來(lái)過(guò),而上且這期間還會(huì )有服務(wù)中斷。

第二,不要使用狀態(tài)或會(huì )話(huà)復制服務(wù),如某些應用服務(wù)器或第三方集群服務(wù)器上的服務(wù)。如本章前面所述,這樣的系統不能很好地擴展,因為對會(huì )話(huà)的修改需要傳播到很多結點(diǎn)上。因此,選擇這種類(lèi)類(lèi)型的實(shí)現,我們就要關(guān)注為了擴展系統需要使用多少內存。

第三,在選擇會(huì )話(huà)或狀態(tài)緩存或持久引時(shí),要選擇不執行真正處理的服務(wù)器上的緩存。雖然這有點(diǎn)挑剔,但的確有助于提高可用性,因為當你丟失了一臺服務(wù)器時(shí),只會(huì )丟失與之相關(guān)的緩存,或者只會(huì )丟失其上運行的服務(wù),而不會(huì )同時(shí)丟失兩者。創(chuàng )建一個(gè)緩存(或持續)層,也使得我們可以只基于緩存訪(fǎng)問(wèn)就能進(jìn)行擴展,而不必再依靠應用服務(wù)和內部及遠程的緩存服務(wù)了。

采用分布式會(huì )話(huà)/狀態(tài)緩存不要做哪些事:

下面列出了實(shí)現緩存管理會(huì )話(huà)或狀態(tài)時(shí)要避免的三種方法口不要實(shí)現要求關(guān)聯(lián)到服務(wù)器的系統。

不要使用狀態(tài)或會(huì )話(huà)復制,在不同的系統中創(chuàng )建重復的數據。
 
不要把緩存放在執行操作的系統上(這并不是說(shuō)不應該有本地應用緩存,只是說(shuō)最好把會(huì )話(huà)信息放在自己的服務(wù)器層上)。

如果你遵守不要做哪些事情的原則,那么選擇需要做哪些事情就容易多了。對于這些題,找們看不可知論的態(tài)度,因此,我們更關(guān)心的是設計,而不是實(shí)現細節,如應該采用哪種開(kāi)源的緩存或數據庫解決方案等。我們有一個(gè)強烈的感覺(jué),你幾乎不需要自己開(kāi)發(fā)緩存方案。有了那么多分布式對象緩存選擇,從memcached到開(kāi)源的或第三方的數據庫,如果誰(shuí)還需要為存放會(huì )話(huà)信息而實(shí)現自己的緩存方案,會(huì )顯得很荒謬可笑。

這就帶來(lái)了問(wèn)題,應該用什么實(shí)現緩存呢?對我們來(lái)說(shuō),這個(gè)問(wèn)題實(shí)際上是在可靠性和持久性與成本之間進(jìn)行衡量。如果你期望把會(huì )話(huà)或狀態(tài)信息保存一段時(shí)間,如購物車(chē),那么可能會(huì )決定采用具有長(cháng)期可持久性的解決方案存放部分或所有的會(huì )話(huà)信息。在我們見(jiàn)過(guò)的許多實(shí)例中,都是采用數據庫來(lái)實(shí)現的。但是,采用數據庫顯然會(huì )使每一事務(wù)處理的成本大于簡(jiǎn)單的解決方案,如非持久性的分布式對象緩存。

如果你不需要持久性,就可以從眾多的對象緩存中選擇一種。關(guān)于對象緩存及其用法的討論。在有些情況下,你可能兩者都會(huì )選擇,即數據庫的持久性和數據庫前端的緩存的低成本性。這樣的實(shí)現,既具有數據庫的持久性,也可以通過(guò)數據庫前端的緩存實(shí)現高成本效益的事務(wù)處理擴展。

關(guān)于分布式會(huì )話(huà)狀態(tài)緩存的考慮因素

下面是三種常見(jiàn)的分布式緩存的實(shí)現方法及其優(yōu)缺點(diǎn)。

只用數據庫來(lái)實(shí)現成本最高,但所有數據都是持久性的,在分布式環(huán)境中可以將更新和讀操作之間的沖突處理得非常好。
 
非持久性的分布式對象緩存比較快,成本相對較低,但出出故障后,不能恢復數據,對于用戶(hù)訪(fǎng)問(wèn)間隔時(shí)間較長(cháng)的情況不適用。

有的為網(wǎng)站建設,由數掂庫提供持久性,由緩存提供高性?xún)r(jià)比的擴展性,很適合需要持久性又想成本低的情況。

本文地址:http://havencoinwallet.com//article/3517.html
相關(guān)文章:
最新文章:
国产免费丝袜调教视频爱剪辑|国产小受18asian|国产福利91精品一区二区三区|久久久青草大香|欧美丰满熟妇xxxx性