前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅扩缩容,一致性哈希算法

如何优雅扩缩容,一致性哈希算法

作者头像
架构之家
发布2022-07-12 13:18:18
5300
发布2022-07-12 13:18:18
举报
文章被收录于专栏:架构之家

- 背景 -

当前后台微服务架构盛极一时,docker技术日趋成熟,二者如同伯牙子期的相遇,天作之合。而服务容器化在任何业务背景下都会遇到动态扩缩容,随着业务的访问量级波动,容器资源的自动化增加和回收可以为运维减少压力。

此外,在扩缩容前后,都需要负载均衡来维持各节点上的负载压力,从而使得扩缩容变得更加“优雅”。负载均衡技术中常用的算法模型就会涉及到一致性哈希算法。

- 求余哈希算法 -

服务集群中每个节点都有个“哈希地址”作为唯一标识,其计算公式简写如下:

add = hash(object) mod Nadd=hash(object)modN

当发生扩缩容导致增加或减少一个节点时,剩余节点的地址映射都会发生改变

add = hash(object) mod (N±1)add=hash(object)mod(N±1)

进而导致所有节点的数据需要迁移,代价太大

- 一致性哈希算法 -

一致性哈希将哈希值空间设计成“环状”,值域为[0,2^32-1],定义域可以使用节点的IP或主机名来计算。

假设我们有3个节点和4个数据,其地址在哈希值空间的分布如下:

按照一致性哈希算法,每个数据按顺时针方向,绑定到距离它最近的节点,例如数据A绑定01节点,数据D绑定02节点,数据B、C绑定03节点。

假设03节点被缩减掉,数据B和C就需要绑定到01节点,其余数据和节点不需要迁移。

假设增加一个节点04,如下图,按照一致性哈希算法,只需要将数据B重新迁移到节点04即可。

- 总结 -

一致性哈希算法,因为其特殊的数据结构和数据绑定算法,使得在节点增加和减少时,可发生的数据迁移量大大减少,数据迁移减少,带来的应用价值就是减少动态扩缩容的时间。

目前市面上“秒级”的扩缩容产品非常少,大部分都在“分钟级”,当扩缩容反应越灵敏,在业务运营大型活动时,发生服务宕机或者雪崩的概率就会大大降低!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • - 背景 -
  • - 求余哈希算法 -
  • - 一致性哈希算法 -
  • - 总结 -
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档