我正在做一些实验来确定Memcached在不同类型的错误(Memcached节点崩溃,高延迟......)的情况下的态度。在崩溃的情况下,failOver不是我所期望的。
对我来说,当memcached客户端崩溃并激活了一些选项时,memcached服务器应该在一段时间后停止使用已倒下的节点并仅使用剩余的节点。
在实验开始时,我使用两个memcached客户端和一个带有请求生成器的服务器,我在其中存储了10000个请求,并且请求在客户端节点之间平均分配。
然后我将崩溃注入节点,其余节点将不会从死节点获取请求。我想要新的设置并在剩余的节点中完成。
请求生成器为brutis,每次执行一次,每次运行9次:set从1到10000,get相同,但由于之前的重新分配,set设置较慢。
使用的选项是(OPT_REMOVE_FAILED_SERVERS,true)。
我正在使用libmemcached-1.0.16,memcached-1.4.15,而memcached的php版本是2.1.0。
一旦被驱逐,我怎么能获得,哈希函数只发送给生命节点?
由于
答案 0 :(得分:0)
您必须使用CONSISTENT哈希:
$memcache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
我正在测试这个,针对php5-memcached:2.0.1和libmemcached:1.0.8,但我在测试故障转移选项时遇到了很多问题。
但是,首先,在设置一致哈希时,在死服务器上两次点击后,死服务器的所有密钥都分布在其他服务器上。