php哈希取模,PHP取模hash和一致性hash操作Memcached分布式集群
本篇笔记记录了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分布式集群相关推荐
- java使用国标方式取流,一种基于JAIN-SIP的国标28181平台分布式集群实现系统的制作方法...
本发明涉及国标设备接入相关技术领域,尤其是指一种基于jain-sip的国标28181平台分布式集群实现系统. 背景技术: 在传统安防行业,采用较多的是用c++编写的产品,该类产品存在一些缺陷:该类产品 ...
- Redis集群:一致性哈希
一.Redis集群的使用 我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形 ...
- Java 取模和取余
Java 取余和取模都是计算一个整数除以另一个整数后所得到余数.计算原理如下: 取余运算符 % 表示求余数运算,计算公式为 a % b = r,其中 a 和 b 分别表示被除数和除数,r 表示所得到的 ...
- java中的取模_Java 中的取模和取余
期末复习密码学时需要用到取模运算,发现 Java 中的 % 运算符并不是取模运算(Modulo Operation),而是取余运算(Complementation). 计算方法 对于整数 a,b 来说 ...
- 取整、取余、取模的区别
--------------------------------------------- -- 时间:2019-01-02 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
- python 除数总是提示为0_python负数求余不正确?——取模 VS 取余
前天小王同学正在leetcode兴致勃勃的刷题,用java写了一版后又习惯性的用python写了一版,代码逻辑完全一样,但提交答案后居然提示[解答错误]! 经过反复调试,发现问题出在涉及求余的地方,p ...
- C语言中取余与取模的区别
c中取余与取模区别 以前没注意过这个问题,今天查了一下,感觉过于繁琐,现在简单明了的总结一下 对于整型数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者 ...
- python中的除法,取整和求模
本文为转载,原博客地址:https://blog.csdn.net/huzq1976/article/details/51581330 首先注明:如果没有特别说明,以下内容都是基于python 3.4 ...
- [深入浅出C语言]理解取整、取余和取模
关于C语言的取模运算,也许你只了解正数取模,而从未接触过负数取模,本文就来分享一波C语言取整.取模和取余的个人学习经验与心得,希望对你有所帮助. 笔者水平有限,难免存在纰漏,欢迎指正交流. 关于取整 ...
最新文章
- WordPress 开启 Gzip 为网页加载提速减少响应时间
- ABAP 数字处理相关内容备注
- 使用keras时下载VGG19过慢的解决方法
- 使用Go语言从零编写PoS区块链(译)
- Docker安装部署MongoDB及MySql和MongoDB的语法对比
- 23种设计模式之原型模式代码实例
- 深度了解视频直播CDN技术
- tomcat 日志catalina.out 按天自动分割 设定时任务定时清除
- 基于单片机智能交通灯控制系统设计外文文献_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...
- 用计算机按45乘5CE再按,2015年4月全国自学考试计算机应用基础真题
- 拳皇FANS们不得不看的动画
- 高中计算机竞赛学什么,什么是高中数学竞赛,要怎么去做?
- SRGAN-超分辨率图像复原
- 【Java刷题】04_二叉树的左右视图
- torch_points_kernels遭遇 ModuleNotFoundError: No module named ‘torch_points_kernels.points_cpu‘
- 大型在线实时应用解决方案
- 大牛证券:涪陵榨菜Q2单季营收增速创近六年新低
- 使用一条sql语句在postgres中查询总数和分页数据
- flink案例之求TopN
- 【融职教育】Web全栈工程师课程安排
热门文章
- Android屏幕适配的两种方式
- Python Web框架Django学习(二)
- day4作业小代码练习
- cocoapods安装bug
- 超实用的JavaScript技巧及最佳实践
- IT-标准化-系列-15.在VPC 2007中构建虚拟网络
- 山西专科学校计算机专业排名,河南单招计算机专业专科学校排名
- CVX学习笔记(转载
- 二甲医院云服务器,医院用上云计算 病情上传到云端可行否?
- android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]