一致性环Hash算法.NET实现
一致性环Hash算法有一个大用处就是解决Memcache服务器down机问题的。目的是增加或者移除Memcache服务器后,最大限度的减少所受影响。
理论方面的就不介绍了,网上有太多资料了,请大家自己搜索搜索。
在此写了一个ConsistencyRing类来实现算法,具体代码在此下载。
测试类如下:
public static void Test()
{
{
ConsistencyRing cr = new ConsistencyRing(); Console.WriteLine("=============AddServer Test=============");
cr.AddServer("");
cr.AddServer("");
cr.AddServer("");
cr.AddServer("");
cr.AddServer(""); Console.WriteLine("=============RemoveServer Test=============");
cr.RemoveServer("");
cr.RemoveServer("");
cr.RemoveServer("");
cr.RemoveServer("");
} {
ConsistencyRing cr = new ConsistencyRing(); cr.AddServer("");
cr.AddServer("");
cr.AddServer("");
cr.AddServer("");
cr.AddServer(""); Console.WriteLine("=============GetServerIp Test=============");
string key;
string serverIp; key = "A1";
serverIp = cr[key];
Console.WriteLine("A1所在IP:" + serverIp); cr.RemoveServer("");
serverIp = cr[key];
Console.WriteLine("A1所在IP:" + serverIp);
}
}
上面AddServer/RemoveServer中的参数为了演示,因此改成了简洁的数字string,大家使用时完全可以用192.168.1.1这样的string来传。
运行结果:

可以看到,增加删除节点后,都不会影响不相关节点。
点击代码下载
一致性环Hash算法.NET实现的更多相关文章
- hash环/consistent hashing一致性哈希算法
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的 ...
- 【策略】一致性Hash算法(Hash环)的java代码实现
[一]一致性hash算法,基本实现分布平衡. package org.ehking.quartz.curator; import java.util.SortedMap; import java.ut ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
- 一致性hash算法详解
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...
- 一致性 hash 算法( consistent hashing )a
一致性 hash 算法( consistent hashing ) 张亮 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and rando ...
- 一致性hash算法简介与代码实现
一.简介: 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance) 2.单调性(Monotonicity) 3.分散性(Spread) 4.负 ...
- memcache的一致性hash算法使用
一.概述 1.我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同,只是对我们要存储数据的k ...
- 【转载】一致性hash算法释义
http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karge ...
随机推荐
- 章节七、2-Linked List
package introduction9; import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...
- springboot 学习之路 4(日志输出)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- 详解JS设计模式
原文链接:www.cnblogs.com 一:理解工厂模式 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式. 简单的工厂模式可以理解为解决 ...
- Ubuntu-18.04安装Docker
Docker 介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
- python 数据驱动ddt使用,需要调用下面的代码,请挨个方法调试,把不用的注释掉
#!/usr/bin/env/python # -*- coding: utf-8 -*- # @Time : 2018/12/15 15:27 # @Author : ChenAdong # @Em ...
- MyBatis笔记----MyBatis数据库表格数据修改更新的两种方法:XML与注解
继上 http://www.cnblogs.com/tk55/p/6659285.html http://www.cnblogs.com/tk55/p/6660477.html 注解 将id:8 na ...
- 2017 Pig-0.16.0安装
前提:已经装好hadoop2.7.3 单机版本: export PIG_HOME=/usr/local/pig export PATH=$PATH:$PIG_HOME/bin 运行:pig -x ...
- AWS云使用100条宝贵经验分享
在今天的文章中,我整理出了大量当初曾经错过.而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得.在几年来的实践当中,我通过在AWS之上新手构建及部署各类应用程序而积累到 ...
- ASP.NET -- WebForm -- 给图片添加水印标记
ASP.NET -- WebForm: 给图片添加水印标记 ASP.NET:使用 WebForm(C#) 制作一个简单的为图片添加水印的页面. 1. Test2.aspx文件 <%@ Page ...
- June 6. 2018 Week 23rd Wednesday
You are confined only by the walls you build yourself. 限制你的只有你自己筑起的墙. From Andrew Murphy. Let's repe ...