http://blog.sina.com.cn/s/blog_502c8cc40100kfz2.html

Haproxy实现了Map-based 和consistent hash算法,来完成通过哈希值选取后端服务器。然而,其与consistent hash方式不同的是,基于map-based的哈希选择算法对由于其中一台后台服务器宕机等情况,都会对之前建立的哈希值与后台服务器之间的映射关系发生改变,不能实现一致性访问。而基于consistent hash算法比较完美地解决了这些问题

但在haproxy 1.4.7及之前版本中,如果用户在配置文件中没有为每个server指定id, 那么杯具出现了,haproxy在根据输入的hash值选取后端服务器时,有可能将选到同一后台服务器。这主要是由于haproxy在初始化每个server节点哈希值时,采用其id值与一个固定偏移值之和做哈希运算得到其哈希值。如果此时用户没有设定server id,在初始化后,所有的后台服务器节点哈希值都可能相等,这样在根据hash值选取后台服务器时,由于所有的后台服务器节点哈希值与输入的hash值距离都相等,那么haproxy将选择同一台服务器处理用户请求。

在最新的1.4.8版本中,解决了由于用户没有指定server id,造成不能将用户请求均匀地分发到的后台服务器上。如果用户有没有指定server id,那么在初始化时,haproxy根据server列表中定义的顺序初始化其id值。但仍存在潜在风险。如果用户需要修改配置文件,添加、删除后端服务器并重启haproxy,由于server在列表中的顺序发生变化,其id值也随之变化,这样可能造成其中某台服务器A,原先通过一致性哈希算法分配给它的用户请求分配给了其它的服务器。解决该问题就是在设置后台服务器时,如果使用一致性哈希算法,务必指定一个唯一的id。

转载于:https://www.cnblogs.com/balaamwe/archive/2012/01/17/2324545.html

haproxy Consistent Hash浅析相关推荐

  1. 关于consistent hash的思考及改进方案

    这里默认读者已经知道了一致性hash算法的原理. 1. 为什么在某台机器宕机之后consistent hash算法能够避免所有或者大部分key重新hash? 首先需要弄清的是,如果某一台机器宕机之后, ...

  2. 聊聊jump consistent hash

    序 本文主要简介一下jump Consistent hash. jump consistent hash jump consistent hash是一致性哈希的一种实现,论文见A Fast, Mini ...

  3. 主从mysql replication 集群的sharding memcache集群使用consistent hash

    sharding 实现跨越DB的分区与扩展功能 consistent hash 一致哈希实现memcache的扩展 http://cache.baidu.com/c?m=9f65cb4a8c8507e ...

  4. Google Jump Consistent Hash 一致性哈希算法

    接触到这个一致性哈希算法是在腾讯音乐的讲座中,用于在线扩容 如图中的例子,本来只有group0和group1,现在要增加一个group2用于推送新的数据,如果使用不满足单调性要求的hash方法,首先向 ...

  5. dapr的consistent hash

    序 本文主要研究一下dapr的consistent hash consistent_hash dapr/pkg/placement/hashing/consistent_hash.go var rep ...

  6. Upstream Consistent Hash

    介绍 https://www.nginx.com/resources/wiki/modules/consistent_hash/地址 ngx_http_upstream_consistent_hash ...

  7. 2016 -Nginx的负载均衡 - 一致性哈希 (Consistent Hash)

    Nginx版本:1.9.1 算法介绍 当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡. 使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小. 在nginx+ ...

  8. consistent hash

    https://www.youtube.com/watch?v=ffE1mQWxyKM https://www.youtube.com/watch?v=zaRkONvyGr8

  9. HAProxy.md

    HAProxy 代理http 1.正向代理 2.反向代理 代理作用:web缓存(加速).反向代理.内容路由(根据流量及内容类型等将请求转发至特定服务器).转码器: 在代理服务器上添加Via首部: 缓存 ...

最新文章

  1. 2022-2028年中国光刻机行业深度调研及投资前景预测报告
  2. Selenium_python自动化环境搭建篇
  3. checkbox全选衍生问题讨论
  4. java邻接图_Java数据结构 - 图(邻接表存储)
  5. freebsd java 能用吗_在FreeBSD 4.9下安装JAVA环境
  6. formdata ie9怎么兼容_2021上半年教师资格证笔试报名如何设置兼容性?
  7. docker容器别人访问很卡_docker容器下远程访问jupyter的方式
  8. 生产执行系统MES架构设计及应用架构
  9. 当前车牌识别相机技术发展现状
  10. docker安装时报服务失败,因为控制进程退出并带有错误代码
  11. 信息数据管理思维导图(Xmind)
  12. 计算机表格里的隐藏怎么弄出来怎么办,电脑表格隐藏不见了怎么办
  13. 基于Pytorch的猫狗分类
  14. c调python_C调和弦及组成音
  15. 我的思维工具(三)收益半衰期
  16. OSChina 周四乱弹 —— 每天都迟到是种什么样的体验
  17. bilibili小电视桌面天气站(esp8266+微信小程序控制)超详细,看这一篇就够了
  18. python公里转海里_英里和海里和公里怎么换算
  19. DICOM:DICOM标准学习路线图(初稿)
  20. 个人计划日程提升系统APP的设计与实现

热门文章

  1. Java实现插值查找算法 Insert search
  2. 计算机视觉与深度学习 | 深度学习与VO、SLAM、三维重建【论文及代码篇】
  3. C语言 | 基于STM32的IIC代码实现(源代码)
  4. SQLite 日期 时间
  5. android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头
  6. C语言进行数据指定步长的区间统计
  7. C++ 关键字 extern
  8. AI领域首个iF用户体验大奖——第四范式斩获2项德国iF设计奖
  9. mxnet基础到提高(10)--读写文件
  10. tensorflow随笔-底层梯度