这是我参与「第四届青训营 」笔记创作活动的第32天
队内的队员都很团结,早早的确定了分工,乘着较为清闲的时间,准备研究研究Erasure Coding纠删码的原理;
参考了三篇主要文章,一下子就弄懂了纠删码的基本概念,主要参考的是以下三篇文章:
1.弄清纠删码在DFS系统的应用,在大局上看问题
2.对纠删码在理论上进一步系统性理解
3.图片概念帮助进一步理解
了解概念之后,认为问题的难点主要在于:
需要改变横向式的条带式存储,而不是传统的连续存储方式
以Block作为一个存储的单元,但是数据是横向式的保存在各个Block上.换句话说,同一个Block上的不同分段的数据是完全不连续的
考虑之后,决定按照下面方法进行进一步研究
分布式系统的上的工程实现
编码
在创建数据块以及数据块远远未写满的情况下,使用副本策略做数据容错。当若干数据块(比如k个数据块)都基本写满,则禁止对这些数据块做写(包括修改、删除)等操作。此时进行编码,当编码成功时,删除冗余的数据块副本。此时就从副本策略变成纠删码策略。
解码
一个线程定期扫描数据,比如对数据块和校验块做crc校验,如果发现有数据块或者校验块失效,则启动恢复线程.
恢复线程先根据EC组现有的数据情况,从远程或本地获取必要的数据进行解码,恢复失效数据。