【一致性Hash算法(分布式算法)】教程文章相关的互联网学习教程文章

php分库分表hash算法_php技巧

代码如下://分库分表算法 function calc_hash_db($u, $s = 4) { $h = sprintf("%u", crc32($u)); $h1 = intval(fmod($h, $s)); return $h1; } for($i=1;$i{ echo calc_hash_db($i); echo ""; } function calc_hash_tbl($u, $n = 256, $m = 16) { $h = sprintf("%u", crc32($u)); $h1 = intval($h / $n); $h2 = $h1 % $n; $h3 = base_convert($h2, 10, $m); $h4 = sprintf("%02s", $h3); return $h4; }

php 分库分表hash算法

代码如下://分库分表算法 function calc_hash_db($u, $s = 4) { $h = sprintf("%u", crc32($u)); $h1 = intval(fmod($h, $s)); return $h1; } for($i=1;$i<100;$i++) { echo calc_hash_db($i); echo "<br>"; } function calc_hash_tbl($u, $n = 256, $m = 16) { $h = sprintf("%u", crc32($u)); $h1 = intval($h / $n); $h2 = $h1 % $n; $h3 = base_convert($h2, 10, $m); $h4 = sprintf("%02s", $h3); return $h4; }

PHP实现的各类hash算法长度及性能测试实例

本文实例讲述了PHP实现的各类hash算法长度及性能测试。分享给大家供大家参考,具体如下: Hash结果如下 <?php $data = "hello world"; foreach (hash_algos() as $v) {$r = hash($v, $data, false);printf("%-12s %3d %s\n", $v, strlen($r), $r); } ?>运行结果: md2 32 d9cce882ee690a5c1ce70beff3a78c77 md4 32 aa010fbc1d14c795d86ef98c95479d17 md5 32 5eb63bbbe01eeed093cb22bb8f5acdc3 sha1 40 2aae6c35...

PHP实现的一致性HASH算法示例

本文实例讲述了PHP实现的一致性HASH算法。分享给大家供大家参考,具体如下: <?php // +---------------------------------------------------------------------- // | Perfect Is Shit // +---------------------------------------------------------------------- // | PHP实现:一致性HASH算法 // +---------------------------------------------------------------------- // | Author: alexander <gt199899@gmail.com> // ...

PHP实现的一致性Hash算法详解【分布式算法】【图】

本文实例讲述了PHP实现的一致性Hash算法。分享给大家供大家参考,具体如下: 一致性哈希算法是分布式系统中常用的算法,为什么要用这个算法? 比如:一个分布式存储系统,要将数据存储到具体的节点(服务器)上, 在服务器数量不发生改变的情况下,如果采用普通的hash再对服务器总数量取模的方法(如key%服务器总数量),如果期间有服务器宕机了或者需要增加服务器,问题就出来了。 同一个key经过hash之后,再与服务器总数量取模的...

PHP一致性hash分布式算法封装类定义与用法示例

本文实例讲述了PHP一致性hash分布式算法封装类定义与用法。分享给大家供大家参考,具体如下: 一、无虚拟节点实现 <?php /*** 一致性hash分布式算法* @param $key* @return int* 实现步骤* 1.先将0~ 是32位最大带符号整数(0x7FFFFFFF) 想象成一个闭环* 2.将服务器列表通过hash算法分布在 圆环之中* 3.将key值也分布在圆环之中* 4.通过_isSorted判断服务器是否需要进行倒序排序 排序后遍历服务器 找到最近的服务器 返回* hash算法...

PHP实现普通hash分布式算法简单示例

本文实例讲述了PHP实现普通hash分布式算法。分享给大家供大家参考,具体如下: <?php /** 普通hash分布式算法* @param $key* @return int*/ class Hash{protected $_serverList = array();public function __construct($_serverList){if(is_array($_serverList)){$this->_serverList = $_serverList;}else{return false;}}//通过hash算法返回一个整数值protected function myHash($key){$md5 = substr(md5($key),0,8);$seed = 31; ...

PHP实现的服务器一致性hash分布算法示例

本文实例讲述了PHP实现的服务器一致性hash分布算法。分享给大家供大家参考,具体如下: <?php /*** 对服务器进行一致性hash分布算法*/ class HashRing {private $servers = array();private $nodeList = array();private $nodeHashList = array();private $nodeTotalNum = 0;private $virtualNodeNum = 32;private $keyHash = ;public function __construct($servers){$this->servers = $servers;foreach ($servers as $server) {f...

PHP Hash算法:Times33算法代码实例

最近看书,里面提到了一些Hash算法。比较有印象的是Times33,当时理解不是很透测,今天写了段程序来验证了一下。 先上代码:代码如下: <?php /** * CRC32 Hash function * @param $str * @return int */ function hash32($str) { return crc32($str) >> 16 & 0x7FFFFFFF; } /** * Times33 Hash function * @param $str * @return int */ function hash33($str) { $hash = 0; for($i=0; $i<str...

PHP中对各种加密算法、Hash算法的速度测试对比代码

PHP 的Hash算法是比较常用的,现在的MD5有时候不太安全,就得用到Hash_algos()中的其它算法,下面进行了一个性能的比较。 php代码: define(testtime, 50000); $algos = hash_algos(); foreach($algos as $algo) {$st = microtime();for($i = 0; $i < testtime; $i++) {hash($algo, microtime().$i);}$et = microtime();list($ss, $si) = explode( , $st);list($es, $ei) = explode( , $et);$time[$algo] = $ei + $es - $si - $ss;...

php的hash算法介绍

Hash Table是PHP的核心,这话一点都不过分。 PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的。 PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想。 PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等. 对于字符串而...

Level DB中的BloomFliter及Murmur Hash算法【图】

1、LevleDb bloomfilter存储格式 在LevelDb 1.4版本中,加入了bloomfilter的支持,这样在DB::Get()方法的调用过程中,可以直接读取到bloom filter的block部分,从而减少了不存在key的大量的sstable文件随机读的操作。 在levelDb中的filter block是存储在Meta Block部分,目前的版本Meta BLock只有现在的bloom filter,后续版本还可能会加入新的内容。如下图所示。 对于Meta block中的bloom filter的存储方式,如下图所示。 [fil...

libmemcached一致性hash算法详解(2)

author: selfimpr blog: http://blog.csdn.net/lgg201 mail: lgg860911@yahoo.com.cn libmemcached一致性hash算法详解(1)----php-memcached客户端一致性哈希与crc算法共用产生的bug分析 这里就不废话了, 直接上代码: #include stdio.h#include stdlib.h#inclauthor: selfimpr blog: http://blog.csdn.net/lgg201 mail: lgg860911@yahoo.com.cnlibmemcached一致性hash算法详解(1)----php-memcached客户端一致性哈希与crc算法共用产生...

基于一致性hash算法(consistenthashing)的使用详解_MySQL【图】

bitsCN.com 1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的对象都会失效,怎么办,需要把 cache m 从 cache 中移...

基于一致性hash算法(consistenthashing)的使用详解【图】

1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ; hash(object)%N 一切都运行正常,再考虑如下的两种情况; 1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的对象都会失效,怎么办,需要把 cache m 从 cache 中移除,这时...