memcached是业内使用最多,最稳定的内存缓存服务器,danga的java_memcached-client也是比较稳定的一款java分布式集群客户端。
其实现原理是利用hash算法实现服务器定位,保证读写都在同一台。memcached集群数据互补,没有主从和备份,这是很多公司节约成本的做法。所以在一台服务器宕机的情况下,读写都无法进行,转到nosql数据库或RDBMS,并在服务器重新启动后容错工具容错就行。
所以memcached的部署和客户端还是很简单。memcached协议基于文本,也不难。至于hash算法实现如下:
private long getHash( String key, Integer hashCode ) { if ( hashCode != null ) { if ( hashingAlg == CONSISTENT_HASH ) return hashCode.longValue() & 0xffffffffL; else return hashCode.longValue(); } else { switch ( hashingAlg ) { case NATIVE_HASH: return (long)key.hashCode(); case OLD_COMPAT_HASH: return origCompatHashingAlg( key ); case NEW_COMPAT_HASH: return newCompatHashingAlg( key ); case CONSISTENT_HASH: return md5HashingAlg( key ); default: // use the native hash as a default hashingAlg = NATIVE_HASH; return (long)key.hashCode(); } } }
private long getBucket( String key, Integer hashCode ) { long hc = getHash( key, hashCode ); if ( this.hashingAlg == CONSISTENT_HASH ) { return findPointFor( hc ); } else { long bucket = hc % buckets.size(); if ( bucket < 0 ) bucket *= -1; return bucket; } }
本文介绍了Memcached作为内存缓存服务器的应用及其实现原理。详细解释了如何通过hash算法定位服务器,确保数据读写操作的一致性。同时,文中还探讨了Memcached集群的数据互补特性及其简单的部署方式。
3561

被折叠的 条评论
为什么被折叠?



