論實(shí)現(xiàn)序列化的在云端的必要性

責(zé)任編輯:editor006

2015-04-17 14:11:56

摘自:劉瑩慧的專(zhuān)欄

對(duì)于java實(shí)現(xiàn)序列化的重要性,在單機(jī)程序內(nèi)是不太容易被重視的,在本地調(diào)試中,tomacat自動(dòng)為為序列化的程序?qū)崿F(xiàn)了序列化,而且bean(用來(lái)實(shí)現(xiàn)緩存的java程序)太小,不會(huì)出現(xiàn)什么問(wèn)題。

對(duì)于java實(shí)現(xiàn)序列化的重要性,在單機(jī)程序內(nèi)是不太容易被重視的,在本地調(diào)試中,tomacat自動(dòng)為為序列化的程序?qū)崿F(xiàn)了序列化,而且bean(用來(lái)實(shí)現(xiàn)緩存的java程序)太小,不會(huì)出現(xiàn)什么問(wèn)題。

但是一旦部署到云端,麻煩就出現(xiàn)了,就會(huì)發(fā)現(xiàn)session為什么存不進(jìn)值呢?不久前我在新浪云云端部署session就出現(xiàn)了未能取不到值的問(wèn)題。

論實(shí)現(xiàn)序列化的在云端的必要性

  針對(duì)新浪云服務(wù)器,session的信息使用的是分布式Memcache存儲(chǔ)。

而Memcache存儲(chǔ)呢?

不少想構(gòu)建大負(fù)載的網(wǎng)站都采取Memcache來(lái)分擔(dān)數(shù)據(jù)庫(kù)的壓力。

Memcache首先在服務(wù)器端的內(nèi)存中開(kāi)辟一個(gè)空間,然后建立一個(gè)hash表。

memcache 以守護(hù)程序的形式運(yùn)行在服務(wù)器端(一個(gè)或者多個(gè)服務(wù)器),隨時(shí)接受來(lái)自客戶(hù)端的連接操作,然后進(jìn)行存取數(shù)據(jù),Memcache是一款nosql內(nèi)存數(shù)據(jù)庫(kù)。采用的是鍵值存儲(chǔ),每個(gè)客戶(hù)端存入的對(duì)象都有一個(gè)唯一的key。但是對(duì)象是沒(méi)辦法持久化的,跟memcache很相似的redis是可以實(shí)現(xiàn)持久化到硬盤(pán)的。然后把客戶(hù)端需要緩存的數(shù)據(jù)以key-value的形式保存在服務(wù)器的內(nèi)存中的,value值存入key值hash轉(zhuǎn)化后的對(duì)應(yīng)的某個(gè)服務(wù)器上。取值的時(shí)候通過(guò)同樣的轉(zhuǎn)化后對(duì)響應(yīng)的服務(wù)器上付出請(qǐng)求即可。

而在序列化在在其中起到什么作用呢?

在memcache緩存到內(nèi)存的時(shí)候,是需要使用到序列化存儲(chǔ)的,因此如果你的bean包中的代碼都沒(méi)實(shí)現(xiàn)序列化接口,在緩存的時(shí)候是不會(huì)被緩存到服務(wù)器內(nèi)存中的,這樣就造成了session并沒(méi)有存值的問(wèn)題發(fā)生。

所以在部署到新浪云的程序存儲(chǔ)到session中的對(duì)象必須實(shí)現(xiàn)序列化接口才可以進(jìn)行session存儲(chǔ)的。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)