Virtual Shard

介绍了VirtualShard技术的基本原理及其在系统扩容时的作用,同时指出了该技术无法解决的数据重新分布问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于DB Shard而言,Reshard是一个在系统扩容时不得不面对的问题.Reshard需要解决两个问题:1.修改散列规则以适应新的结点规模.2.将已有数据重新分布到正确的结点.Virtual Shard主要用于解决第一个问题.

  Virtual Shard的基本思想是:建立一组虚拟的结点,虚拟结点的数量是固定的,一般定义为一个系统可预期的最大结点数.具体数字并不重要,只要足够大就可以,比如100,1000等等.数据的散列和路由规则都是以虚拟结点为基础进行的.在系统上线初期,多个虚拟结点会映射到一个物理结点,当系统需要扩容时,只需要修改虚拟结点和物理结点之间的隐射关系即可,不需要修改数据散列和路由规则.这是Virtual Shard的主要目的.举例说:如个一个系统虚拟结点是100,在上线初期,有两个物理结点,虚拟结点和物理结点的映射关系为:1-50的虚拟结点映射到1号物理结点上.51-100结点映射到2号结点上.当后期系统扩容至4个物理结点时,可将映射策略修改为:1-25号虚拟结点对应1号物理结点, 26-50号虚拟结点对应2号物理结点,51-75号虚拟结点对应3号物理结点,76-100号虚拟结点对应4号物理结点.

  但是,Virtual Shard只能解决第一个问题,对于数据的重新分布是无能为力的.目前没有一种通用的技术用于系统扩容时的数据重新分布.这是因为它是一项非常偏向特定应用的工作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值