开发者学堂课程【分布式文件存储系统技术及实现:分布式系统功能设计-Erasure Coding 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/368/detail/4384
分布式系统功能设计-Erasure Coding
一、在分布式存储系统里面数据压缩的技术—Erasure Coding
1. 在分布式存储系统里面数据压缩的技术—Erasure Coding
(1) 纠错码也叫 Erasure Coding ,这个编码的方式有一个特点:比如用户的数据是 m 份,然后通过 m 份计算出 n 份数据,然后 m+n 份数据存储到磁盘上,如果只有 m 份数据,不管是用户的原始数据还是计算出来的纠错码数据,它都可以恢复之前的 n 份数据。这种特性就可以有效的降低存储空间。比如可以跟多个拷贝对比,用户数据有六份,可以计算编码块为三份,实际占用的存储空间是九份。 Erasure Coding 的编码方式存储效率是 1:1.5,相对于多个拷贝存储的方式, 1:3 要优越很多。
(2) 在数据安全性方面进行比较,由于 m+n 的存储可以允许n份同时丢失,如果 n=3 ,是安全性不小于多份拷贝有三个拷贝的。
2. 结合 Erasure Coding 的读写过程,了解编码过程和解码过程。
(1) 结合系统看一下 Erasure Coding 在系统中的读写过程。用户的数据被均等分成三份,然后编码块计算出来是两份,一共五份数据,写入到不同的 OSD 上,这时候 OSD 相对位置是不可变的,比如第一个编码块和第二个编码块位置相关但不允许相互交换。在读的过程中可以看到用户先读左边编码的块,就是用户的原始数据。如果从头扫描文件的话,它会读第一个编码块 OSD5 上面的数据,但是它在读用户的原始数据第二个块的时候,发现节点非常慢,这时可以通过其它块恢复这个数据块的位置,然后加快读取过程,这时候它要做的是读取 OSD1 和 OSD3 上面的数据,同之前读取的 OSD5 的数据共同计算,恢复 OSD2 上面的数据。如果这时候只有 OSD2 是慢节点 ,那就可以有效的规避到这个节点,在读第二块数据的时候,产生了网络流量,所以这就是弊端。
(2) 编码的劣势:在出现异常节点的时候,如果想读到数据,就需要更大的网络流量,这种编码方式一般用于冷数据存储。