一致性哈希算法

最初提出是为了解决分布式Cache,网络中的热点(Hot spot)问题

一致性哈希算法原理 - lpfuture - 博客园

memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性hash时采用如下步骤:

  1. 首先求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。
  2. 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
  3. 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。

一致性哈希解决数据分布不一致造成的数据倾斜问题?

引用虚拟节点,通过虚拟节点的二次映射解决数据分布不均引起的节点负荷不均。

CAP : 分布式中的理论: 一致性、可用性、分区容错性三者不可兼得,只能保证其中两个。因此,任何分布式系统的设计是三者之间的取舍。

分布式场景Webservice

一个Webservice后台运行着众多servers 对webservice的读写会反映到后台的server集群,并对CAP进行定义:

  • C - 一致性: 所有节点上的数据时刻保持同步
  • A - 可用性(高可用低延迟): 每个请求都能得到响应,无论成功或失败
  • P-分区容错性: 系统应该能持续提供服务,即使系统内部有消息丢失

高可用、数据一致是很多分布式设计的目标,但是高可用不可避免的是分区

  • CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。
  • CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。
  • AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。

CAP理论 一致性哈希算法相关推荐

  1. 一致性哈希算法原理详解

    一.普通 hash 算法 (取模算法): 在了解一致性哈希算法之前,我们先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那 ...

  2. 负载均衡一致性哈希算法实现 | nginx 负载均衡一致性哈希源码分析 | ngx_http_upstream_consistent_hash_module 源码分析

    这是本学期分布式计算/系统课程负载均衡节的课后作业,理解七层反向代理的负载均衡 Nginx 中使用的的一致性哈希算法.开头只是讲一些没用的东西,后面主要是分析 Nginx 的 O(1) 时间复杂度的一 ...

  3. 一致性哈希算法--数据库应用

    背景   在分布式数据库中,尤其是Share nothing的MPP架构中,为了充分利用每台服务器的资源,通常会将超大表数据进行分片分布到多个数据节点中,提升数据库的查询性能.   分区并不是生成新的 ...

  4. 哈希分布与一致性哈希算法—在swift中看到这个有意思的算法

    在研究swift的基本原理时,看到了这个算法,不怎么明白,找了几个帖子来学习.感谢@博客园一条辉的博客(liunx.cnblogs.com) @sparkliang 前言 在我们的日常web应用开发当 ...

  5. [转]哈希分布与一致性哈希算法简介

    哈希分布与一致性哈希算法简介 作者:liunx 来源:http://www.cnblogs.com/liunx/archive/2010/03/24/1693925.html 前言 在我们的日常web ...

  6. 一致性哈希算法原理及代码实现

    一致性哈希 安装 go get -u github.com/junhaideng/consistent 使用 c := consistent.New() ips := []string{"1 ...

  7. 哈希分布与一致性哈希算法简介

    前言 在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了.相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由clien ...

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

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

  9. 一致性hash算法虚拟节点_一致性哈希算法——虚拟节点

    一致性哈希算法--虚拟节点 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是 ...

最新文章

  1. 利用Directsound编程实现实时混音
  2. linux 约等于符号,Mac OS X基础教程:特殊符号的快捷输入方式
  3. spring-boot-maven-plugin 插件的作用(转)
  4. Python Day18
  5. 九十三、动态规划系列之股票问题(下)
  6. 中职生转段计算机应用基础,吉林省2017年高等职业教育对口升学、中职—本科衔接试点转段考试安排通知...
  7. 【匈牙利算法】【二分图匹配】【转载】趣写算法系列之--匈牙利算法
  8. 复旦计算机转专业面试问题,转专业最容易的6所985大学,清华大学第4,复旦大学第3,这所第一...
  9. 做游戏,学编程(C语言) 5 数组之生命游戏
  10. 解决vue项目首页加载过慢的情况
  11. SVN服务更换小记(由subversion更换为VisualSVN)
  12. PID调节之积分(I)调节
  13. 为什么有些公司不招大龄程序员?
  14. 你需要TrustedInstaller提供的权限才能对此文件进行更改
  15. 减肥成功,给自己的减肥之路留个纪念(测试博客)
  16. Kotlin 苦海无涯(一)
  17. 本科三本的计算机博士,读书中的我 从三本本科到985博士
  18. AOP入门案例(切入点及表达式)
  19. 公众号被 SRS 大佬推荐是怎么样一种体验~~
  20. 「Premiere教程」为视频添加文字字幕

热门文章

  1. 小程序开发之影分身术
  2. win7开机启动项怎么设置_怎么设置u盘为第一启动项bios u盘第一启动项bios设置方法【详解】...
  3. 九宫格拼图c语言程序,求问九宫拼图怎么判断有无解
  4. SSH和SFTP服务监听端口分离
  5. MacBook U盘装系统详细步骤
  6. php繁体拼音字母,[UTF-8]汉字转换为拼音首字母pinyinFirstChar.fn.php
  7. Vscode 远程服务器 debug
  8. 孩子数学成绩不好怎么办_孩子数学成绩差,家长怎么办?
  9. 转发:stm32 移植 freertos
  10. java:按钮(复选框)