PHP取模hash和一致性hash操作Memcached分布式集群

  • 时间:
  • 浏览:1

注释掉php代码中的11214//$memcached->addServer('192.168.75.132', '11214');

再次执行php代码

查看key的分布

相关笔记:

CentOS6.9源码编译安装memcachedCentOS6.9源码编译安装php-memcached扩展

对比两次key的分布:

key_2和key_10命中如此变动,始终在11211中,一些10个key机会服务器的减少命中位于变化

php代码

执行上述代码,查看log

对比两次key的分布:

11211原有的key命中如此位于变化,新增了key_4

11212原有的key命中如此位于变化

11213原有的key命中如此位于变化,新增了key_12

有一个 key机会服务器的减少命中位于变化

取模hash算法减少一台服务器有10个key命中位于了变化。

一致性hash算法减少一台服务器一个 key命中位于了变化。

这里只测试了1一个 key,模拟的数据量太小意味key分布不均匀,但服务器减少意味key命中位于变化和模拟数据量大小无关,只是和hash算法有关,哪几种测试体现了一致性hash算法的优势,取模hash机会服务器的减少意味少量key的取模结果位于变化,命中的服务器也位于了变化;而一致性hash算法key是固定在一一个 有2^32-一一个 节点的hash环上,服务器减少key在hash环上的位置不想位于变化,仅仅影响减少的那台服务器上key的命中,增加服务器也仅仅影响hash环上下一一个 位置服务器的帕累托图key而已

原文地址:https://www.jmsite.cn/blog-624.html

注释掉php代码中的11214//$memcached->addServer('192.168.75.132', '11214');

再次执行php代码

查看key的分布

查看key的分布

执行上述代码,查看log

查看key的分布

php代码