论实现序列化的在云端的必要性

对于java实现序列化的重要性,在单机程序内是不太容易被重视的,在本地调试中,tomacat自动为为序列化的程序实现了序列化,而且bean(用来实现缓存的java程序)太小,不会出现什么问题。

但是一旦部署到云端,麻烦就出现了,就会发现session为什么存不进值呢?不久前我在新浪云云端部署session就出现了未能取不到值的问题。

论实现序列化的在云端的必要性

针对新浪云服务器,session的信息使用的是分布式Memcache存储。

而Memcache存储呢?

不少想构建大负载的网站都采取Memcache来分担数据库的压力。

Memcache首先在服务器端的内存中开辟一个空间,然后建立一个hash表。

memcache 以守护程序的形式运行在服务器端(一个或者多个服务器),随时接受来自客户端的连接操作,然后进行存取数据,Memcache是一款nosql内存数据库。采用的是键值存储,每个客户端存入的对象都有一个唯一的key。但是对象是没办法持久化的,跟memcache很相似的redis是可以实现持久化到硬盘的。然后把客户端需要缓存的数据以key-value的形式保存在服务器的内存中的,value值存入key值hash转化后的对应的某个服务器上。取值的时候通过同样的转化后对响应的服务器上付出请求即可。

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

在memcache缓存到内存的时候,是需要使用到序列化存储的,因此如果你的bean包中的代码都没实现序列化接口,在缓存的时候是不会被缓存到服务器内存中的,这样就造成了session并没有存值的问题发生。

相关推荐