memcached 解决分布式系统中session储存问题

阅读更多

memcached
http://www.danga.com/memcached/

memcached是一个Client Server结构的远程Cache实现。
Server
是用C写的,提供了多种语言的客户端API,包括Java, C#, Ruby, Python, PHP, Perl, C等多种语言。
memcached
主要使用在Shared Nothing Architecture中。应用程序通过客户端API,从memcached server存取数据。
典型的应用,比如,用memcached作为数据库缓存。
也常有这样的用法,用memcached存放HTTP Session的数据。具体做法是包装Session Interface,截获setAttribute(), getAttribute()方法。

MemcachedSessionWrapper {
Object getAttribute( key ){
return memcachedClient.get (session.getId() + key);
}
void setAttribute( key, value ){
memcachedClient.setObject(session.getId() + key, value);
}
}

不同计算机上的应用程序通过一个IP地址来访问memcahced Server
同一个key对应的数据,只存在于一台memcached server的一份内存中。
memcached server
也可以部署在多台计算机上。Memcached通过keyhashcode来判断从哪台memcached server上存取数据数据。我们可以看到,同一个key对应的数据,还是只存在于一台memcached server的一份内存中。
所以,memcached不存在数据同步的问题。这个特性很关键,我们后面讲到Cluster Cache的时候,就会涉及到数据同步的问题。
memcached
由于是远程Cache,要求放到CacheKeyValue都是Serializable
远程Cache,最令人担心的网络通信开销。据有经验的人说,memcached网络通信开销很小。
memcached
API设计也是远程通信友好的,提供了getMulti()等高粒度的调用方法,能够批量获取数据,从而减少网络通信次数。

你可能感兴趣的:(memcached,网络应用,Cache,Python,数据结构)