云存储的黑暗面:元数据保障(下)阅读的一点记录

来源:互联网 发布:js object转array 编辑:程序博客网 时间:2024/05/22 13:16

文章中中提到了一种方法WRN方法,在写入时,应该采用两阶段提交方案。

如果客户端直接写,假设只有一个元数据服务器写成功,那么我们无法得知这个元数据是否是写成功了,如果读到这个元数据,哪怕只有一个副本,也可能造成读数据的混乱。

我认为应该采用两阶段提交,如GFS,客户端在元数据服务集群中选择一个leader写,这个leader选择一个多数派,进行两阶段提交,如果写失败,不会提交,所以读元数据的时候不会读到。但是可能出现另一个问题,在两阶段提交的第二个提交阶段不能保证每个副本都收到了提交的命令。这里我想到的解决方案是,可以在这个leader中写日志。首先如果已经第一阶段完成,那么很可能第二阶段也会成功。如果不成功,那么可能是该服务器遭受了严重损坏,如宕机。但是此时我们仍认为该次写入是成功的,虽然不是多数派存储了最终数据。因为多台服务器同时宕机的情况很少,我们可以利用定期的副本之间的同步来,解决某些副本没有存储到的内容。

0 0