本篇笔记记录了PHP使用Memcached扩展,采用取模hash和一致性hash算法操作Memcached分布式集群的实现对比

1.开启4个Memcached服务模拟集群

2.取模hash算法

php代码

执行上述代码,查看log

查看key的分布

服务器键名

11211key_2,key_3,key_4,key_10

11212key_1,key_6,key_9, key_12

11213key_7,key_8

11214key_5, key_11

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

再次执行php代码

查看key的分布

服务器键名

11211key_1, key_2, key_6, key_7, key_8, key_9, key_10, key_11, key_12

11212

11213key_3, key_4, key_5

对比两次key的分布:

key_2和key_10命中没有变动,始终在11211中,其他10个key因为服务器的减少命中发生变化

3.一致性hash算法

php代码

执行上述代码,查看log

查看key的分布

服务器键名

11211key_1, key_6, key_11

11212key_7, key_10

11213key_2, key_3, key_5, key_8, key_9

11214key_4, key_12

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

再次执行php代码

查看key的分布

服务器键名

11211key_1, key_4, key_6, key_11

11212key_7, key_10

11213key_2, key_3, key_5, key_8, key_9, key_12

对比两次key的分布:

11211原有的key命中没有发生变化,新增了key_4

11212原有的key命中没有发生变化

11213原有的key命中没有发生变化,新增了key_12

有2个key因为服务器的减少命中发生变化

4.对比

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

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

这里只测试了12个key,模拟的数据量太小导致key分布不均匀,但服务器减少导致key命中发生变化和模拟数据量大小无关,而是和hash算法有关,这些测试体现了一致性hash算法的优势,取模hash因为服务器的减少导致大量key的取模结果发生变化,命中的服务器也发生了变化;而一致性hash算法key是固定在一个有2^32-1个节点的hash环上,服务器减少key在hash环上的位置不会发生变化,仅仅影响减少的那台服务器上key的命中,增加服务器也仅仅影响hash环上下一个位置服务器的部分key而已

php哈希取模,PHP取模hash和一致性hash操作Memcached分布式集群相关推荐

  1. java使用国标方式取流,一种基于JAIN-SIP的国标28181平台分布式集群实现系统的制作方法...

    本发明涉及国标设备接入相关技术领域,尤其是指一种基于jain-sip的国标28181平台分布式集群实现系统. 背景技术: 在传统安防行业,采用较多的是用c++编写的产品,该类产品存在一些缺陷:该类产品 ...

  2. Redis集群:一致性哈希

    一.Redis集群的使用 我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形 ...

  3. Java 取模和取余

    Java 取余和取模都是计算一个整数除以另一个整数后所得到余数.计算原理如下: 取余运算符 % 表示求余数运算,计算公式为 a % b = r,其中 a 和 b 分别表示被除数和除数,r 表示所得到的 ...

  4. java中的取模_Java 中的取模和取余

    期末复习密码学时需要用到取模运算,发现 Java 中的 % 运算符并不是取模运算(Modulo Operation),而是取余运算(Complementation). 计算方法 对于整数 a,b 来说 ...

  5. 取整、取余、取模的区别

    --------------------------------------------- -- 时间:2019-01-02 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  6. python 除数总是提示为0_python负数求余不正确?——取模 VS 取余

    前天小王同学正在leetcode兴致勃勃的刷题,用java写了一版后又习惯性的用python写了一版,代码逻辑完全一样,但提交答案后居然提示[解答错误]! 经过反复调试,发现问题出在涉及求余的地方,p ...

  7. C语言中取余与取模的区别

    c中取余与取模区别 以前没注意过这个问题,今天查了一下,感觉过于繁琐,现在简单明了的总结一下 对于整型数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者 ...

  8. python中的除法,取整和求模

    本文为转载,原博客地址:https://blog.csdn.net/huzq1976/article/details/51581330 首先注明:如果没有特别说明,以下内容都是基于python 3.4 ...

  9. [深入浅出C语言]理解取整、取余和取模

    关于C语言的取模运算,也许你只了解正数取模,而从未接触过负数取模,本文就来分享一波C语言取整.取模和取余的个人学习经验与心得,希望对你有所帮助. 笔者水平有限,难免存在纰漏,欢迎指正交流. 关于取整 ...

最新文章

  1. WordPress 开启 Gzip 为网页加载提速减少响应时间
  2. ABAP 数字处理相关内容备注
  3. 使用keras时下载VGG19过慢的解决方法
  4. 使用Go语言从零编写PoS区块链(译)
  5. Docker安装部署MongoDB及MySql和MongoDB的语法对比
  6. 23种设计模式之原型模式代码实例
  7. 深度了解视频直播CDN技术
  8. tomcat 日志catalina.out 按天自动分割 设定时任务定时清除
  9. 基于单片机智能交通灯控制系统设计外文文献_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...
  10. 用计算机按45乘5CE再按,2015年4月全国自学考试计算机应用基础真题
  11. 拳皇FANS们不得不看的动画
  12. 高中计算机竞赛学什么,什么是高中数学竞赛,要怎么去做?
  13. SRGAN-超分辨率图像复原
  14. 【Java刷题】04_二叉树的左右视图
  15. torch_points_kernels遭遇 ModuleNotFoundError: No module named ‘torch_points_kernels.points_cpu‘
  16. 大型在线实时应用解决方案
  17. 大牛证券:涪陵榨菜Q2单季营收增速创近六年新低
  18. 使用一条sql语句在postgres中查询总数和分页数据
  19. flink案例之求TopN
  20. 【融职教育】Web全栈工程师课程安排

热门文章

  1. Android屏幕适配的两种方式
  2. Python Web框架Django学习(二)
  3. day4作业小代码练习
  4. cocoapods安装bug
  5. 超实用的JavaScript技巧及最佳实践
  6. IT-标准化-系列-15.在VPC 2007中构建虚拟网络
  7. 山西专科学校计算机专业排名,河南单招计算机专业专科学校排名
  8. CVX学习笔记(转载
  9. 二甲医院云服务器,医院用上云计算 病情上传到云端可行否?
  10. android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]