memcached和一致性hash算法
1 一致性hash算法的一致性
这里的一致性指的是该算法可以保持memcached和数据库中的数据的一致性。
2 什么是一致性hash算法
2.1 为什么需要一致性hash算法
现在有大量的key value的数据需要分散的存储到不同的机器上的memcached中,如何根据key来分派机器。
简单的方法直接对机器数目取模,比如有3台机器,首先对key求hash,假如hash分别是1,2,3,4,5,6,7,8,那么
3,6 分派到第一台机器
1,4,7分派到第二台机器
2,5,8分派到第三台机器
但是,假如加了一台机器,4台机器,那么就要对4取模了,
4,8分派到第一台机器
1,5分派到第二台机器
2,6分派到第三台机器
3,7分派到第四台机器
这样,3本来是第三台机器,现在分到了第4台机器,那么原来的数据就失效了,第四台机器的数据需要去数据库中重新取。4、5、6、7、8同理。
这样导致的问题就是原来的memcached缓存的数据大量失效,需要重新获取,成本很高。
2.2 一致性hash算法怎么做
对机器根据ip也计算hash值,比如机器1是3,机器2是5,机器3是9。
现在分派策略变成了,如果key的hash值大于9,就分派给机器1,如果大于3就分派给机器2,如果大于5就分派给机器3。
如果新加一台机器4,hash值是8,那么如果key大于5分派给机器4,大于8给机器3,其它的都不变。
这样只是机器3上的memcached需要更新部分数据,其它原来的机器上的memcached和数据库中保持一致。
2 memcached
它是一个分布式的缓存,它通过客户端实现了分布式缓存,根据key将数据缓存到不同的机器上。
客户端可以使用xmemcached、spymemcached等
boolean set(final String key, final int exp, final Object value);
可见,任何对象都可以存放在memcached中。
memcached和一致性hash算法的更多相关文章
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...
- 一致性Hash算法在Memcached中的应用
前言 大家应该都知道Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现.常规的方法是将server的hash值与server的总台数进行求余,即hash% ...
- 分布式缓存技术memcached学习系列(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到"分布式一致性hash算法"这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前, ...
- (转) 一致性Hash算法在Memcached中的应用
前言 大家应该都知道Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现.常规的方法是将 server的hash值与server的总台数进行求余,即hash ...
- 转: memcached Java客户端spymemcached的一致性Hash算法
转自:http://colobu.com/2015/04/13/consistent-hash-algorithm-in-java-memcached-client/ memcached Java客户 ...
- 一致性hash算法在memcached中的使用
一.概述 1.我们的memcacheclient(这里我看的spymemcache的源代码).使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同.仅仅是对我们要存 ...
- memcache的一致性hash算法使用
一.概述 1.我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同,只是对我们要存储数据的k ...
- 一致性Hash算法在Redis分布式中的使用
由于redis是单点,但是项目中不可避免的会使用多台Redis缓存服务器,那么怎么把缓存的Key均匀的映射到多台Redis服务器上,且随着缓存服务器的增加或减少时做到最小化的减少缓存Key的命中率呢? ...
- 【转载】一致性hash算法释义
http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karge ...
随机推荐
- 标准C程序设计七---56
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- fuelgauge
void fg_init(void *queue, void (*bs_fuel_gauge_status)(void)) { fg_init_ready = bs_fuel_gauge_status ...
- Linux 之 Redis
Linux 之 Redis 参考教程:[千峰教育] 一.Redis简介: 说明: 1.也是一种类似于Memcached的key-value机制的存储服务 2.是非关系型数据库(NoSQL)的一种 3. ...
- 表格 td中,取checkbox后几位值
function addToPanDianDetail() { var detail_id = ""; var detail_code = ""; $(&quo ...
- 转Yii框架radioButtonlist水平横排及去除除换行符号
横排: echo $form->radiobuttonlist($model, ‘type’,$arrtype,array(‘template’ => ‘<li style=”dis ...
- (五)github删除仓库
一.一直学习怎么创建仓库,创建了太多仓库,一直不知道咋删除,有点懵,其实很简单,就是对英文不太习惯,要加深英文水平. 找到setting,然后再下面找到danger Zone
- codevs——1008 选数
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知 n ...
- 「NOI2014」动物园
link : https://loj.ac/problem/2246 水水KMP #include<bits/stdc++.h> #define ll long long #define ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十一:IT人應對之道-靈活
身為一位優秀的IT專家,不能夠只是在技術面的應對能力強,而必須是在人事的應對能力上也要能夠靈活與彈性,否則就算一天給你48小時,你也會把自己的身心弄垮,再強的專業.技術.能力也會瞬間化為泡影. 坦白說 ...
- 卸载ArcGISDesktop低版本程序遇到异常,如何完全卸载?
[解决办法]:正常情况下,运行 ArcGIS for Desktop 光盘中的 “冲突检测”工具,会自动完全卸载低版本的ArcGIS 程序.如果遇到异常无法卸载(例如安装过非正式版软件),如下位置是A ...