分布式memcached-虚拟节点
1.通过memcached服务器下的不同端口来达到模拟多台服务器的效果
2.假设现在有三台memcached服务器,本地分别使用11211,11212,11213三个端口来模拟
①打开端口

②连接端口

③以同样的方式别打开三台,不要关闭cmd窗口,记得ctrl+】回显
3.上代码
<?php
//一致性哈希算法
class Memcached1{
protected $server=['11211','11212','11213'];
protected $node=[];
protected $memcache;
//memcached服务器连接
public function __construct()
{ } protected function MemcachedConnect($port){
$this->memcache=new Memcache();
$a=$this->memcache->connect('localhost',$port);
}
//产生虚拟节点
public function GetServer(){
foreach ($this->server as $k=>$v){
for ($i=1;$i<=100;$i++){
$m=sprintf("%u", crc32($v.'_'.$i));
$this->node[$m]=$v;
}
}
ksort($this->node);
return $this->node;
}
//获取缓存存放节点
protected function GetPort($key){
$key=sprintf("%u",crc32($key));
$nodelist=array_keys($this->node);//返回一个包含数组所有键名的数组(从小到大)
foreach ($this->node as $k=>$v){
if ($key>max($nodelist)){
$port=$this->node[$nodelist[0]];
break;
}
if ($key<=$k){
$port=$v;
break;
}
}
return $port;
}
//生成缓存
public function SetMemcached($key,$value){
//生成虚拟节点
$this->GetServer();
//获得数据存放端口
$p=$this->GetPort($key);
//链接memcached服务器
$this->MemcachedConnect($p);
$this->memcache->set($key,$value);
echo "ok";
}
public function get($key){
//生成虚拟节点
$this->GetServer();
//获得数据存放端口
$p=$this->GetPort($key);
//链接memcached服务器
$this->MemcachedConnect($p);
return $this->memcache->get($key); }
}
$m=new Memcached1;
//$list=$m->GetServer();
echo "<pre>";
//print_r($m->node);
$m->SetMemcached('aaa','aaa');
//echo $m->get('aaa');
4.总结
虚拟节t点的思想是基于一体哈希算法,相比较于传统的一体哈希算法,在服务器挂掉其中一台或者几台时,不会造成仅存的服务器因压力骤大而停机,也比传统的取余计算方式合理
在某台服务器停机时,会将压力合理的分摊到其他的服务器
分布式memcached-虚拟节点的更多相关文章
- Memcached 笔记与总结(7)增加虚拟节点
仅仅把 Memcached 服务器集群地址通过一致性哈希转映射在圆环上,可能会出现数据不能均匀地分配给各台 Memcached 服务器. 解决方案是引入虚拟节点,就是把每个映射在圆环上的服务器地址(物 ...
- memcached学习——分布式算法(Consistant hash + 虚拟节点)(三)
1.取余算法 优点:数据分布均匀缺点:当服务器动态的添加.删除节点或者某台server down掉,会导致命中率超大幅度下降,甚至导致服务不可用 2.Consistant Hash算法:一致性哈希算法 ...
- 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群
手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...
- HDU 5521 Meeting(虚拟节点+最短路)
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total ...
- 一致性hash和虚拟节点
consistent hashing 算法的原理 consistent hashing 是一种 hash 算法,简单的说,在移除 / 添加一个 cache 时,它能够尽可能小的改变已存在key 映射关 ...
- Hadoop 分布式环境slave节点重启忽然不好使了
Hadoop 分布式环境slaves节点重启: 忽然无法启动DataNode和NodeManager处理: 在master节点: vim /etc/hosts: 修改slave 节点的IP (这个时候 ...
- hdu 2121无根最小树形图要建一个虚拟节点
#include<stdio.h> #include<string.h> #define inf 999999999 #define N 1100 struct node { ...
- ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志
按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力.现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出.日志文件同步到阿里云日志服务(SLS)进行 ...
- ACK容器服务发布virtual node addon,快速部署虚拟节点提升集群弹性能力
在上一篇博文中(https://yq.aliyun.com/articles/647119),我们展示了如何手动执行yaml文件给Kubernetes集群添加虚拟节点,然而,手动执行的方式用户体验并不 ...
随机推荐
- 移动端https抓包那些事--初级篇
对于刚刚进入移动安全领域的安全研究人员或者安全爱好者,在对手机APP进行渗透测试的时候会发现一个很大的问题,就是无法抓取https的流量数据包,导致渗透测试无法继续进行下去. 这次给大家介绍一些手机端 ...
- 关于vue组件的一个小结
用vue进行开发到目前为止也有将近一年的时间了,在项目技术选型的时候隔壁组选 react的时候我们坚持使用vue作为前端的开发框架.虽然两者思想上的差异不大,但是vue的语法在代码的可读性以及后期的维 ...
- C++ STL vector详解
一.解释: vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越.一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界.而vector正好弥补了这个缺陷,它 ...
- NYOJ--45--棋盘覆盖(大数)
棋盘覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的 ...
- hdu--5351--MZL's Border
表示看这篇博客后找到了思路: http://blog.csdn.net/queuelovestack/article/details/47291195 补充一下数据,方便观察规律 m LBorder ...
- 带有WS-Security验证的webservice
示例用的是spring+CXF来配置webservice 首先是web.xml配置,将spring,CXF的配置文件加载进去,由于我客户端跟服务端在同一个工程里面,所以配置文件在一块. <con ...
- AKOJ -- 1529 -- 寻找最大数
1529: 寻找最大数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 107 Solved: 53 上一题SubmitStatus标签打分编辑题目信 ...
- 弱校ACM奋斗史
看到这篇文章, 已是大三了, 我的ACM之路也即将走向终点, 感慨自己还是不够努力, 给自己的大学留下诸多遗憾. 和他们相比, 我差的就是太远了, 值得高兴的是我们学校有一个好老师-----赵靖老师, ...
- HTML的学习笔记
一.HTML的概述(了解) a.html是什么 : hypertext markup language 超文本标记语言 超文本:音频,视频,图片称为超文本.. ...
- 【机器学习PAI实践一】搭建心脏病预测案例
一.背景 心脏病是人类健康的头号杀手.全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病. 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的 ...