memcached整理の分布式集群算法
memcached如何实现分布式?
memcached是一个“分布式内存对象缓存系统”,然而memcached并不像mongodb那样,允许配置多个节点,且节点之间“自动分配数据”,就是说memcached节点之间是不能互相通信的,因此,memcached的分布式,要靠用户去设计算法,把数据分布在多个memcached节点中。
分布式之取模算法
N个节点,从节点0到节点N-1。key对N取模,余i,则key落在第i台服务器上。

取模算法对缓存命中率的影响
假设有N台服务器,运行中突然down掉一台,那么取模的底数就变为了N-1
后果是什么呢?
后果是命中率在服务器down期间内,急剧下降至1/N-1;服务器越多,则down机后果越严重。
一致性哈希算法原理
把各服务器节点映射放在钟表的各个时刻上, 把key 也映射到钟表的某个时刻上。该key 沿钟表顺时针走,碰到的第1 个节点即为该key 的存储节点。

一致性哈希对其他节点的影响
当某个节点down 后,只影响该节点顺时针之后的1 个节点,而其他节点不受影响.因此,Consistent Hashing 最大限度地抑制了键的重新分布。

一致性哈希+虚拟节点对缓存命中率的影响
节点在圆环上分配分配均匀,因此承担的任务也平均,但事实上, 一般的Hash 函数对于节点在圆环上的映射,并不均匀。当某个节点down 后,直接冲击下1 个节点,对下1 个节点冲击过大,能否把down 节点上的压力平均的分担到所有节点上?答案是可以的。
引入虚拟节点

虚拟节点即----N 个真实节点,把每个真实节点映射成M 个虚拟节点, 再把M*N 个虚拟节点,散列在圆环上. 各真实节点对应的虚拟节点相互交错分布这样,某真实节点down 后,则把其影响平均分担到其他所有节点上。
memcached整理の分布式集群算法的更多相关文章
- 分布式集群算法 memcached 如何实现分布式?
memcached 是一个”分布式缓存”,然后 memcached 并不像 mongoDB 那 样,允许配置多个节点,且节点之间”自动分配数据”. 就是说--memcached 节点之间,是不互相通信 ...
- Memcached 服务分布式集群如何实现?
特殊说明:Memcached 集群和 web 服务集群是不一样的,所有 Memcached 的数据总和才是数据库的数据.每台 Memcached 都是部分数据.(一台 memcached 的数据,就是 ...
- Redis面试题及分布式集群
Reference: http://blog.csdn.net/yajlv/article/details/73467865 1. 使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似 ...
- Redis分布式集群几点说道
原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html Redis分布式集群几点说道 Redis数据量日益 ...
- redis高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- elasticsearch 口水篇(5)es分布式集群初探
es有很多特性,分布式.副本集.负载均衡.容灾等. 我们先搭建一个很简单的分布式集群(伪),在同一机器上配置三个es,配置分别如下: cluster.name: foxCluster node.nam ...
- 在Hadoop1.2.1分布式集群环境下安装hive0.12
在Hadoop1.2.1分布式集群环境下安装hive0.12 ● 前言: 1. 大家最好通读一遍过后,在理解的基础上再按照步骤搭建. 2. 之前写过两篇<<在VMware下安装Ubuntu ...
- hadoop学习之hadoop完全分布式集群安装
注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...
- Twemproxy 分布式集群缓存代理服务器
Twemproxy 分布式集群缓存代理服务器 是一个使用C语言编写.以代理的方式实现的.轻量级的Redis代理服务器, 它通过引入一个代理层,将应用程序后端的多台Redis实例进行统一管理, 使 应用 ...
随机推荐
- Python Tkinter参考资料之(通用控件属性)
大部分控件的共享选项: 选项(别名) 说明 单位 典型值 没有此属性的控件 background(bg) 当控件显示时,给出的正常颜色 color 'gray25''#ff4400' border ...
- 比XGBOOST更快--LightGBM介绍
xgboost的出现,让数据民工们告别了传统的机器学习算法们:RF.GBM.SVM.LASSO.........现在,微软推出了一个新的boosting框架,想要挑战xgboost的江湖地位.笔者尝试 ...
- 【图片】机器学习--名画风格 neural-style
neural-style 学习画作风格,将风格施加到另外一张图片中 例如将名画<星夜>的风格施加到一副建筑照片中: 源码 https://github.com/jcjohnson/neur ...
- 【MATLAB】读取和写入文本文件
在MATLAB中,来读取和写入文本文件是很简单的事.下面,就来简单介绍下.如果有其他问题,请留言. 一.读取文本文件 思路: 1.用fopen来打开一个文件句柄 2.用fgetl来获得文件中的一行,如 ...
- 微信小程序中this关键字使用技巧
转自:https://blog.csdn.net/qq_33956478/article/details/81348453 微信小程序中,在wx.request({});方法调用成功或者失败之后,有时 ...
- webpy简单使用
#!/usr/bin/env python import web import pymysql.cursors # Connect to the database connection = pymys ...
- bootstrap中的modal 模态弹出框不能放在 form_for里面,一弹出modal会自动submit掉form
bootstrap中的modal 模态弹出框不能放在 form_for里面,一弹出modal会自动submit掉form
- render组件
[render组件] Render继承于Component. It contians general functionality for all renderers. A renderer is wh ...
- __str__&__repr__
[__str__&__repr__] object.__str__(self): Called by the str() built-in function and by the print ...
- 混合开发Js bridge新秀-DSBridge iOS篇
这个DSBridge 和我之前开发做的混合开发 用的方式 很相似,所以觉得很是不错,推荐给你大家. DSBridge-IOS:https://github.com/wendux/DSBridge-IO ...