网站首页 > 技术教程 正文
上一篇文章 Nginx负载均衡之ip hash与hash模块,弥补Round-Robin的缺陷我们介绍了upstream_hash算法,可以按一定的条件 将固定的请求转发到固定的server上。
有遇到一个问题,当上游服务器出现问题的时候,或者扩容的时候会产生什么样的情况。
假如有5台上游服务器,server0 …… server4, 请求根据key进行取模 hash算法: 为key % 5
会产生如下结果:
key5 被upstream到 server0上。
……
key9 被upstream到 server4上。
当server4挂掉了后,原本美好的事情就变成这样:
hash算法:key%4
key5 被upstream到 server1上。
key6 被upstream到 server2上。
key7 被upstream到 server3上。
key8 被upstream到 server0上。
key9 被upstream到 server1上。
这一下就全都打乱了,如果上游服务器有缓存的话,会导致大批量缓存失效的问题。有可能会导致比较严重的事故。
那么一致性hash算法可以有效缓存这种问题。
假设扩容前有4台服务器,均匀地分布在一个环上。
我们的请求key 经过hash算法是0到2的32次方也是均匀的分布在环上,就去找下一个比它大的Node。
当需要扩缩容的时候只会影响两个Node中间的请求。这就尽可能的减少了影响范围。
比如现在在Node2 和Node4之间增加了一个节点Node5。
可以看到原来Node2 到 Node4之间的5个请求,只影响了3个key的请求,只有这3个请求的缓存没有命中了被请求到了Node5上。
当然这并没有解决宕机后的路由不发生变化,都宕机了也无法解决。
使用配置:只需要在hash模块后 加上 consistent就可以了
Syntax: hash key [consistent];
Default: —
Context: upstream
猜你喜欢
- 2024-10-13 Nginx 假死的原因以及解决方法(nginx故障)
- 2024-09-28 Nginx 问题以及对应的解决方案(nginx常见问题)
- 2024-09-28 推荐一款nginx+redis+ehcache高并发与高可用缓存架构
- 2024-09-28 「Nginx」实现负载均衡、限流、缓存、黑白名单和灰度发布
- 2024-09-28 在nginx配置文件中设置nginx缓存(nginx怎么配置缓存)
- 2024-09-28 【Nginx基础】Nginx缓存使用案例(nginx做缓存)
- 2024-09-28 Nginx中浏览器缓存的执行流程(nginx 浏览器缓存)
- 2024-09-28 Nginx 缓存机制详解!非常详细实用
- 2024-09-28 vue项目如何有效解决的浏览器的缓存问题
- 2024-09-28 Nginx 反向代理缓存,看上去很美(nginx反向代理原理及应用)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)