<?php// 一致性哈希算法
class ConsistentHashing
{protected $nodes = [];protected $position = [];protected $mul = 64;  // 每个节点对应64个虚拟节点/*** 把字符串转为32位符号整数*/public function hash($str){return sprintf('%u', crc32($str));}/*** 核心功能*/public function lookup($key){$point = $this->hash($key);//先取圆环上最小的一个节点,当成结果$node = current($this->position);// 循环获取相近的节点foreach ($this->position as $key => $val) {if ($point <= $key) {$node = $val;break;}}reset($this->position);return $node;}/*** 添加节点*/public function addNode($node){if(isset($this->nodes[$node])) return;// 添加节点和虚拟节点for ($i = 0; $i < $this->mul; $i++) {$pos = $this->hash($node . '-' . $i);$this->position[$pos] = $node;$this->nodes[$node][] = $pos;}// 重新排序$this->sortPos();}/*** 删除节点*/public function delNode($node){if (!isset($this->nodes[$node])) return;// 循环删除虚拟节点foreach ($this->nodes[$node] as $val) {unset($this->position[$val]);}// 删除节点unset($this->nodes[$node]);}/*** 排序*/public function sortPos(){ksort($this->position, SORT_REGULAR);}
}// 测试
$con = new ConsistentHashing();$con->addNode('a');
$con->addNode('b');
$con->addNode('c');
$con->addNode('d');$key1 = 'www.zhihu.com';
$key2 = 'www.baidu.com';
$key3 = 'www.google.com';echo 'key' . $key1 . '落在' . $con->lookup($key1) . '号节点上!<br>';
echo 'key' . $key2 . '落在' . $con->lookup($key2) . '号节点上!<br>';
echo 'key' . $key3 . '落在' . $con->lookup($key3) . '号节点上!<br>';

Memcached 一致性哈希算法PHP实现相关推荐

  1. 哈希分布与一致性哈希算法简介

    前言 在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了.相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由clien ...

  2. 一致性哈希算法以及其PHP实现

    在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括:  轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...

  3. Go -- 一致性哈希算法

    一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用 ...

  4. 一致性哈希算法及其在分布式系统中的应用

    摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用.首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个 ...

  5. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据...

    一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashi ...

  6. 一文搞懂负载均衡中的一致性哈希算法

    一致性哈希算法在很多领域有应用,例如分布式缓存领域的 MemCache,Redis,负载均衡领域的 Nginx,各类 RPC 框架.不同领域场景不同,需要顾及的因素也有所差异,本文主要讨论在负载均衡中 ...

  7. 分布式一致性哈希算法

    一致性哈希算法及其在分布式系统中的应用 作者 张洋 | 发布于 2011-10-18 分布式 一致性哈希 摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及 ...

  8. 一致性哈希算法 应用

    互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得成 功,这个和当前的开源技术.海量数据架构有着必不可分的关 ...

  9. 算法高级(24)-一致性哈希算法在分布式系统中的使用场景

    本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用. 一.一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人 ...

最新文章

  1. Dijkstra模板(java)
  2. Linux之服务器时间同步
  3. php用session制作网站仿恶意刷新计数器
  4. 简单记录一次ORA-00600 kcratr_nab_less_than_odr
  5. 【渝粤教育】电大中专中药制剂学作业 题库
  6. LCD12864图形点阵液晶显示模块中文资料介绍
  7. windows打印机共享给linux,linux使用windows共享打印机
  8. Linux基金会:开源技术不受制于《美国出口管制条例》EAR 限制,可自由使用
  9. Android高德混淆问题
  10. IAR在写结构体时不提示_如何写好个人事迹?
  11. 苹果手微信显示无法连接服务器,iPhone手机无法运行微信的4种解决技巧
  12. Beautifully crafted open source icons
  13. 非法破坏计算机系统罪宣判,以非法经营罪提起公诉。法庭未当庭宣判。为什么不会被定破坏计算机信息系统罪呢?...
  14. 一个男人的一生应该有几个女人?
  15. MIMO-OFDM系统原理及其关键技术
  16. 【沐风老师】3DMAX一键生成圣诞树建模插件使用教程
  17. opencv(三)对图像进行简单算术运算(加减乘除)
  18. 测试基础---软件开发生命周期
  19. Google Map手机地图
  20. Jackson:Cannot construct instance of **** (although at least one Creator exists):

热门文章

  1. linux ls连接数,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  2. oracle视图用法,Oracle视图用法示例
  3. [Unity] Animator 播放 Mixamo 动画卡在第一帧的解决办法:勾选 Loop Time
  4. html中css如何引用自定义字体 - 案例篇
  5. python鸭制作类代码_详细解释ducktyping鸭子类型程序设计与Python的实现
  6. thinkphp mysql desc table_数据库表结构_ThinkPHP 数据库表结构处理类(简单实用)-云栖社区-阿里云...
  7. RiPro子主题V8.1开心版 小八子主题v8.1版
  8. iCMS v8.0.0多终端内容管理系统
  9. Cloudreve云网盘系统源码 支持本地储存
  10. youleb多风格响应式博客wordpress主题模板