<span style="font-family: FangSong_GB2312; background-color: rgb(255, 255, 255);">如果想在多台服务器上使用memcached缓存,首先是要保证到每台服务器上缓存的数据比较均匀,这样会充分利用服务器的资源。速度也是很快。</span>

1、memcached缓存支持多实例,但是具体将缓存放置在具体的哪一台服务器上面这个算法是需要我们自己来完成的。前面的文章中有提到使用取余数来计算,但是如果其中有服务器出现问题,那样缓存就被打乱了。

2、使用一致性哈希算法来实现

思想:

1)、将服务器的名字和键值都统一化成比较大的整数,如php使用crc32()这个函数。

2)、然后就是将一台服务器虚拟成多台服务器,这样数据分散的就是比较均匀,

3)、在这些数据上面,以一个圆的形式。从圆的一点开始查找,查到比圆上面小的一点就将该键的缓存放置到找到的服务器上面。这样服务器越多,其中一台或多台服务器出现了问题,都能很好的使用缓存,这样命中率下降的不大。

<?php

/**
* 随机生成一个数接口
*/
interface Hash {
Public function _hash($str);
} /**
* 查找出键的位置
*/
interface Distribution {
Public function lookup ($key);
} /**
* 分布式类
*/
Class Contain implements Hash,Distribution {
Protected $_node = array();
Protected $_mul = 64;
Public function _hash($str) {
return sprintf('%u', crc32($str));
} Public function lookup($key) {
$point = $this->_hash($key);
$node = current($this->_node);
foreach ($this->_node as $k => $v) {
if ($point <= $k) {
$node = $v;
break;
}
}
return $node;
} /**
* 添加服务器节点
*/
Public function addNode($node) { for ($i=0; $i < $this->_mul ; $i++) {
$this->_node[$this->_hash($node . '-' . $i)] = $node;
} //$point = $this->_hash($node);
//$this->_node[$point] = $node;
$this->sortNode();
} Public function sortNode() {
ksort($this->_node, SORT_REGULAR); } /**
* 测试的函数
*/
Public function printSort() {
echo '<pre>';
print_r($this->_node);
}
}

memcached分布式一致性哈希算法的更多相关文章

  1. memcached 一致性哈希算法

    本文转载自:http://blog.csdn.net/kongqz/article/details/6695417 一.概述 1.我们的memcache客户端使用了一致性hash算法ketama进行数 ...

  2. 分布式_理论_08_Consistent Hash(一致性哈希算法)

    一.前言 五.参考资料 1.分布式理论(八)—— Consistent Hash(一致性哈希算法)

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

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

  4. 一致性哈希算法与Java实现

    原文:http://blog.csdn.net/wuhuan_wp/article/details/7010071 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具 ...

  5. 五分钟理解一致性哈希算法(consistent hashing)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法 ...

  6. 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

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

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

  8. Java_一致性哈希算法与Java实现

    摘自:http://blog.csdn.net/wuhuan_wp/article/details/7010071 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具 ...

  9. 一致性哈希算法(consistent hashing)【转】

    一致性哈希算法 来自:http://blog.csdn.net/cywosp/article/details/23397179       一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希 ...

随机推荐

  1. day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记

    课程计划 第一天: 1.电商行业的背景介绍--电子商务 2.淘淘商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建--后台工程 a) 使用maven搭建工程(工程大) b) 使用maven的 ...

  2. Linux性能测试 iostat命令

    Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令 来查看初步定位问题.其中iostat可以给我们提供丰富的IO状态数据.iostat 由 Red Hat ...

  3. 查看静态库.a文件包含的内容

    查看静态库.a文件包含的内容用下面的命令解压: ar x libgdal.a 然后就可以查看文件了: ls adler32.o           cpl_recode.o               ...

  4. wpf采用Xps实现文档显示、套打功能

    原文:wpf采用Xps实现文档显示.套打功能 近期的一个项目需对数据进行套打,用户要求现场不允许安装office.页面预览显示必须要与文档完全一致,xps文档来对数据进行处理.Wpf的Document ...

  5. WPF 柱状图显示数据

    <Window x:Class="Wpf180706.Window9"        xmlns="http://schemas.microsoft.com/win ...

  6. jquery each()的用法--遍历键值对

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. C++ Boost 学习资源列表

    文档书籍下载 Boost Documentation Boost代码下载       优秀网站导航 Boost官方网站 Boost中文站 Boost Consulting     专题资源报告 Lin ...

  8. 从PRISM开始学WPF(番外)共享上下文 RegionContext?

    原文:从PRISM开始学WPF(番外)共享上下文 RegionContext? RegionContext共享上下文 There are a lot of scenarios where you mi ...

  9. 数据绑定(十一)多路绑定MultiBinding

    原文:数据绑定(十一)多路绑定MultiBinding 有时候UI要显示的信息又不止一个数据来源决定,就需要使用MultiBinding,MultiBinding具有一个名为Bindings的属性,其 ...

  10. WAMP采用别名时ThinkPHP5项目设置方法

    打开public目录下的.htaccess文件,并在其中添加 RewriteBase /xxx<IfModule mod_rewrite.c> Options +FollowSymlink ...