PHP实现一致性hash
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,
千家信息网最后更新 2025年02月01日PHP实现一致性hash
serverList[$server])) { //增加虚拟节点 for ($i = 0; $i < $this->virtualPosNum; $i++) { $pos = $this->cHash($server . '#' . $i); //存放虚拟节点存放的对应的服务器 $this->virtualPos[$pos] = $server; //存放单台服务器包含的所有节点 $this->serverList[$server][] = $pos; } //虚拟节点根据位置排序 ksort($this->virtualPos, SORT_NUMERIC); } } /** * 移除一台服务器(循环所有的虚节点,删除值为该服务器地址的虚节点) * @param $key * @return bool */ public function removeServer($key) { if (isset($this->serverList[$key])) { //删除一台服务器上的所有虚节点 foreach ($this->serverList[$key] as $pos) { unset($this->virtualPos[$pos]); } //删除对应服务器 unset($this->serverList[$key]); } } /** * 在当前的服务器列表中找到合适的服务器存放数据 * @param $key 键名 * @return mixed 返回服务器IP地址 */ public function lookup(string $key) { $point = $this->cHash($key);//落点的hash值 $finalServer = current($this->virtualPos);//先取圆环上最小的一个节点当成结果(数组的第一个索引单元) //找到虚拟节点最接近的服务器 foreach ($this->virtualPos as $pos => $server) { if ($point <= $pos) { $finalServer = $server; break; } } reset($this->virtualPos);//重置圆环的指针为第一个(重置数组的指针) return $finalServer; }}$hashServer = new MyConsistentHash();$hashServer->addServer('192.168.1.1');$hashServer->addServer('192.168.1.2');$hashServer->addServer('192.168.1.3');$hashServer->addServer('192.168.1.4');$hashServer->addServer('192.168.1.5');$hashServer->addServer('192.168.1.6');$hashServer->addServer('192.168.1.7');$hashServer->addServer('192.168.1.8');$hashServer->addServer('192.168.1.9');$hashServer->addServer('192.168.1.10');echo "增加十台服务器192.168.1.1~192.168.1.10
";echo "保存 key1 到 server :".$hashServer->lookup('key1') . '
';echo "保存 key2 到 server :".$hashServer->lookup('key2') . '
';echo "保存 key3 到 server :".$hashServer->lookup('key3') . '
';echo "保存 key4 到 server :".$hashServer->lookup('key4') . '
';echo "保存 key5 到 server :".$hashServer->lookup('key5') . '
';echo "保存 key6 到 server :".$hashServer->lookup('key6') . '
';echo "保存 key7 到 server :".$hashServer->lookup('key7') . '
';echo "保存 key8 到 server :".$hashServer->lookup('key8') . '
';echo "保存 key9 到 server :".$hashServer->lookup('key9') . '
';echo "保存 key10 到 server :".$hashServer->lookup('key10') . '
';echo "";print_r($hashServer->virtualPos);
服务器
服务
节点
圆环
地址
指针
数组
合适
最小
位置
单元
数据
索引
结果
落点
十台
循环
排序
一致
一致性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
杭州冷链产业数据库
网络安全手抄报小学 三年级
java软件开发常用的工具
福建高高手网络技术有限公司
聚闪闪网络技术有限公司
拉伸服务器
数据库表有效性规则
前端编程数据库的使用
网络安全数据安全论文
暗黑2重制版角色已在服务器上
宁波智能软件开发
软件开发项目招标演示
浙江LOL服务器
网络安全法第几条规定等级保护
数据库的元数据表从哪里来的
吉红红网络技术有限公司
服务器管理破解
高中网络技术应用讲解视频
杭州同欣网络技术
服务器t430
人人互联网科技公司
触发器数据库完整性技术
工资等级数据库
国家网络安全活动开展工作总结
北大方正工具书资源数据库
sql数据库怎么复制到优盘
公司员工网络安全培训课件
ygomobile怀旧服务器
幼儿园网络安全集中宣教方案
dhcp服务器地址范围