Erasure coding (o’chiruvchi kod). O’zbekchasi shunaqa bo’ladimi yo’qmi aniq bilmayman, lekin juda qiziq texnika ekan. Bilib qo’ysa yaxshi.

Qayerdan bildim? Amazon S3 va MinIOda shunday texnikadan foydalanishar ekan. Database va file serverlarni chidamliligini (fault tolerant) oshirishga va data lost bo’lmasligiga yordam beradigan ajoyib texnika ekan. Replikatsiyaga qaraganda boshqacha uslubda ishlaydi va ayrim holatlarda chidamlilik uchun replikatsiyadan ham ishonchliroq. Yaxshi tushunib va tushuntirib berishga o’zimda yetarli darajada matematik baza bo’lmasada, harna nimadur tushunchaga ega bo’lib qo’yish zarar qilmaydi. Keling, qanday ishlashini ko'rib chiqaylik:

Bitta obyektni (qandaydir data, ma’lumot, file) bir nechta bir xil hajmga ega data fragmentlarga (bo’lakchalarga) bo’lib chiqib, ularni agar bir nechta disk bo’lsa bir nechta disklarga saqlab yoki agar bir nechta server bo’lsa, o’sha serverlarning har xil disklarida saqlab chiqadi va qo’shimcha rezervlash uchun shu data framgentlardan har xil algoritmlar orqali hisob-kitob qilib paritet fragmentlarni yasab chiqadi.

Agar qaysidur obyekt qandaydur muammoli hodisalar sabab o’chib qolsa yana qayta tiklash uchun data va paritet fragmentlardan yana qayta tiklab olishi mumkin.

Keling, 1-rasmda ko'rsatilganidek, aniq misolni (4 + 2 Erasure Coding) ko'rib chiqaylik.

Untitled

  1. Obyekt to'rtta teng o'lchamda d1, d2, d3 va d4 fragmentlarga bo'linadi.
  2. Murakkab matematik formula orqali paritetlarini yaratamiz.
  3. d1 va d2 fragmentlari nimadur sabab ishdan chiqib yo’qoladi.
  4. Murakkab matematik formula orqali d3, d4, p1 va p2 ning ma'lum qiymatlaridan foydalangan holda yo'qolgan d1 va d2 fragmentlarni qayta tiklash uchun ishlatiladi.

Amazon S3 erasure coding uchun qaysi algoritm ishlatishini bilmadim, lekin MinIO Reed-Solomon algoritmidan foydalanadi

Menga yoqgan plyuslari: obyektlarni bir nechta fragmentlarni bo’lib saqlagani uchun, yig’ib olib klientga qaytarish nisbatan tezroq bo’lishi mumkin.

Menga yoqmagan minuslari: ko’plab I/O operatsiyalar va matematik hisob kitoblar qatnashgani sabab ko’proq CPU, RAMlarni talab qiladi. Kompleksligi, talablari ko’pligi va ko’proq storage talab qilishi (ya’ni qanchadir qismi paritetlarga ajratilishi sabab siz sotib olgan storage’ni katta qismini ishlata olmay qolishingiz ehtimoli ham bor).