V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liudaqi
V2EX  ›  问与答

分布式存储,是怎么解决增/删节点,还能维持数据一致性的?原理还是没搞太清楚

  •  
  •   liudaqi · 2017-10-30 07:52:57 +08:00 via Android · 2046 次点击
    这是一个创建于 2566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设有三台图片存储服务器 A,B,C,按 IP 通过一致性 hash 算法,加虚拟节点,分别存储各种图片文件。

    1. B 服务器突然当机了,B 服务器上的文件,怎么迁移,同时保持可访问?

    2. A,B,C 三台服务器全满了,增加 D 服务器。怎么保证所有数据只存到 D 上来?

    3. B 服务器 IP 更换了,新 IP 地址怎么无缝接回原 hash 系统里去呢?
    9 条回复    2017-10-30 10:08:07 +08:00
    tammy
        1
    tammy  
       2017-10-30 08:02:04 +08:00 via Android
    你这是把三台 nas 认为改名分布式存储?
    chih
        2
    chih  
       2017-10-30 08:05:40 +08:00 via Android
    请学习 Hadoop HDFS paxos,这三个是基础。
    liudaqi
        3
    liudaqi  
    OP
       2017-10-30 08:19:02 +08:00 via Android
    @tammy 三台只是举个例子,可以随时增减不是

    @chih 原理没理解透,什么工具都行
    LxExExl
        4
    LxExExl  
       2017-10-30 08:27:33 +08:00 via iPhone
    1 当机了就不行了 但是有备份节点可以访问当机节点的数据
    2 不了解
    3 加入新节点的时候会重新分配已有节点里的数据 之后新节点入环 就衔接上了
    0ZXYDDu796nVCFxq
        5
    0ZXYDDu796nVCFxq  
       2017-10-30 08:58:24 +08:00 via iPhone
    通过 IP 一致性 hash 算法当然不能扩容和冗余了
    你提到图片,那就是对象存储了
    冗余是通过多副本来实现的,比如三节点双副本,或者三节点三副本
    然后需要中央服务器来管理文件对象,实现冗余,高可用,扩容,迁移等功能

    原理差不多都这样,但实现起来就复杂了
    块存储难度更高
    xomix
        6
    xomix  
       2017-10-30 09:15:12 +08:00
    事实上文件都是快存储的冗余…………并没有什么一个文件在什么地方的问题。
    qianlv7
        7
    qianlv7  
       2017-10-30 09:16:40 +08:00
    catror
        8
    catror  
       2017-10-30 09:30:22 +08:00 via Android
    1. 多副本(不同副本放在不同主机),替换的服务器上来后,同步副本
    2. 分布算法加入剩余空间的考虑。另外新服务器上来,也可以做数据迁移来平衡剩余空间
    3. 有换 IP 需求的话,可以考虑用给每个节点命名,解析交给 hosts 文件
    binux
        9
    binux  
       2017-10-30 10:08:07 +08:00 via Android
    需要中心节点协调文件分布的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.