2010-05-20 28 views
2

我正在尝试在跨memcache服务器的数据复制的最佳实践中找到很好的资源。我想完成的是,如果我的服务器中有一台服务器出现故障,则下一台服务器已经设置了信息。如何使用memcache复制数据

我发现“repcached”,但由于我运行的是WIN32测试环境,因此我一直无法安装它。

那么我们如何在服务器之间复制数据呢?

感谢,

回答

1

我从来没有这个困扰自己(内存缓存只是意味着是一个高速缓存毕竟,即使每个实例是所有其他情况下的精确副本,你仍然不能保证一旦添加它就会始终存在一个值:例如,它可能会因为LRU策略而被驱逐)。

但是,如果我的来实现这个功能,我会把它放在客户端,而不是作为服务器的补丁。

也就是说,不是将密钥散列到单个服务器,而是将其散列到2个或3个服务器,并将值存储在所有服务器上。然后,当再次获得价值时,尝试从第一个得到它,如果它不在那里,尝试第二个等等。

这还有一个好处,就是不会复制值:您只能复制那些您选择的值。

+0

嗯,你的意思是使用类似flexihash的东西? http://github.com/pda/flexihash – Industrial 2010-05-20 07:47:08

+1

一致性散列略有不同。使用一致的哈希,如果从池中删除(或添加)服务器,会发生什么情况,那么定义哈希会使所有其他密钥仍散列到同一台服务器:只会使缓存中保存的部分无效在现在删除的服务器中。如果没有一致的哈希,如果你删除了一个服务器,那么*所有*键将失效。 – 2010-05-20 07:49:47

+0

感谢您的帮助,Codeka。这真的很有价值,并使我们朝着正确的方向发展! – Industrial 2010-05-23 00:11:19