論實現(xiàn)序列化的在云端的必要性
對于java實現(xiàn)序列化的重要性,在單機程序內(nèi)是不太容易被重視的,在本地調(diào)試中,tomacat自動為為序列化的程序?qū)崿F(xiàn)了序列化,而且bean(用來實現(xiàn)緩存的java程序)太小,不會出現(xiàn)什么問題。
但是一旦部署到云端,麻煩就出現(xiàn)了,就會發(fā)現(xiàn)session為什么存不進值呢?不久前我在新浪云云端部署session就出現(xiàn)了未能取不到值的問題。
針對新浪云服務器,session的信息使用的是分布式Memcache存儲。
而Memcache存儲呢?
不少想構建大負載的網(wǎng)站都采取Memcache來分擔數(shù)據(jù)庫的壓力。
Memcache首先在服務器端的內(nèi)存中開辟一個空間,然后建立一個hash表。
memcache 以守護程序的形式運行在服務器端(一個或者多個服務器),隨時接受來自客戶端的連接操作,然后進行存取數(shù)據(jù),Memcache是一款nosql內(nèi)存數(shù)據(jù)庫。采用的是鍵值存儲,每個客戶端存入的對象都有一個唯一的key。但是對象是沒辦法持久化的,跟memcache很相似的redis是可以實現(xiàn)持久化到硬盤的。然后把客戶端需要緩存的數(shù)據(jù)以key-value的形式保存在服務器的內(nèi)存中的,value值存入key值hash轉(zhuǎn)化后的對應的某個服務器上。取值的時候通過同樣的轉(zhuǎn)化后對響應的服務器上付出請求即可。
而在序列化在在其中起到什么作用呢?
在memcache緩存到內(nèi)存的時候,是需要使用到序列化存儲的,因此如果你的bean包中的代碼都沒實現(xiàn)序列化接口,在緩存的時候是不會被緩存到服務器內(nèi)存中的,這樣就造成了session并沒有存值的問題發(fā)生。
所以在部署到新浪云的程序存儲到session中的對象必須實現(xiàn)序列化接口才可以進行session存儲的。
博文出自:http://blog.csdn.net/u012944224/article/details/44960171