群集节点的 libmemcached 故障转移
libmemcached fail over of a cluster's node
我使用"c"中的libmemcached来写入MEMCACHED_DISTRIBUTION_CONSITENT_KETAMA使用的数据。所有的密钥都很好地分布在所有集群节点上,但当我关闭其中一个集群节点时,密钥不会被迁移。在谷歌上搜索还不清楚如何设置libmemcached来自动做到这一点。有人在这方面有经验吗?
我认为您必须使用:http://docs.libmemcached.org/memcached_behavior.html#MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS
如果不允许libmemcached删除失败的服务器,它们就会被困在列表中,因此不会重新分发密钥。
请注意,在MEMCACHED_BEHAVIOR_dead_TIMEOUT(请参阅1,2)秒之后,将再次测试失效服务器。因此,如果它再次出现,它将被带回完整服务器的列表中。
Libmemcached在memcached服务器出现故障时不会在内部处理密钥迁移。在这种情况下,当libmemcached尝试检索存储在故障服务器中的密钥时,将出现缓存丢失。
如果我们使用MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,它只会确保缓存未命中率最低,因为密钥是分布式的,不需要完全重新哈希。
解决方案:您可以跨多个节点复制密钥,这将有助于在服务器出现故障时检索(密钥,值)对。但请注意,这不是一个非常一致的解决方案。存在陈旧数据的可能性。
EVICT已发生故障的服务器,因此密钥被散列到新位置,并从集群中删除。
相关文章:
- 分段故障(堆芯转储)矢量
- C++中的动态铸造故障
- 数组的指针从不分段故障
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 调试 CUDA MMU 故障
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- 如何将元素从向量转移到新数组?
- 为什么系统函数总是在C++中返回已转移的退出状态?
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 正在处理故障(堆芯转储)
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- 如何进行故障排除:未定义对"非虚拟 thunk to ..."的引用
- C++函数过载会导致 SEG 故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 如何在SOCI中注册数据库故障转移回调?
- 快速修复引擎 C++ 中的故障转移
- 群集节点的 libmemcached 故障转移