Distributed System

Erasure coding

미르(Мир) 2021. 12. 10. 22:03

Fault tolerance를 보장함과 동시에 스토리지의 저장 공간 효율성을 높이기 위해 설계된 데이터 복제 방식

  1. 데이터를 사용되는 알고르짐에 따라 n개의 block들로 나눈다
  2. Erasure code 코덱을 사용하여 K개의 Parity block을 생성

패리티 블록을 만들어서 각 스토리지에 저장할 경우 3번 데이터를 담은 스토리지가 fail이 되더라도 데이터를 복구할 수 있음

사용가능한 알고리즘
Reed Solomon (RS) : 최대 손실 허용 갯수가 n개와 k개에 따라 달라짐 -> RAID에서 사용중인 기법
XOR : 손실을 허용하는 갯수 1개의 블록이기 때문에 제한적임

기본적으로 데이터를 저장할 경우 3 copy를 두는 데 (ex : master - slave - slave) 이럴경우 데이터가 쌓이면 쌓일 수록 급격하게 커지기 때문에 많은 곳에서 사용중

 

단점 

  • EC를 사용하면 복잡성이 추가되고 장애 복구 비용이 많이 들게됨 
    -> 분산 스토리지에서 데이터 블록을 가져와서 인코딩 / 디코딩 이 필요하기 때문