Bosh sahifa Wiki Distributed system

Distributed system

Distributed system — tarmoq orqali bog‘langan bir nechta mustaqil hisoblash tuguni hamkorlikda bitta xizmat yoki umumiy vazifani bajaradigan tizim. Tugunlar o‘z protsessori, xotirasi va lokal soatiga ega; ular faqat xabar almashish orqali muvofiqlashadi. Foydalanuvchi tizimni yagona xizmat sifatida ko‘rishi mumkin, ammo ichkarida qisman nosozlik, kechikish va holat nusxalari mavjud.

Asosiy xususiyatlari

Markaziy dasturda komponentlarning ko‘pi bir jarayon va umumiy xotirada ishlaydi. Taqsimlangan muhitda esa xabar qancha vaqtda yetishi yoki umuman yetishi oldindan aniq emas. Bir tugun ishlayotgan paytda boshqasi to‘xtashi mumkin; bu partial failure deb ataladi. Kuzatuvchi timeout ko‘rsa, masofadagi tugun ishdan chiqqanini ham, faqat tarmoq sekinlashganini ham ajrata olmaydi.

Tugun soatlari mutlaq sinxron emas. NTP farqni kamaytiradi, lekin hodisalarning global tartibini doimo kafolatlamaydi. Shu sababli tizimlar logik soat, versiya raqami, vector clock yoki konsensus jurnalidagi tartibdan foydalanishi mumkin.

Arxitektura qismlari

  • service instance so‘rovning bir qismini bajaradi;
  • load balancer trafikni sog‘lom instansiyalarga taqsimlaydi;
  • message broker komponentlarni vaqt bo‘yicha ajratadi;
  • replikatsiyalangan ma’lumotlar ombori chidamlilik va o‘qish sig‘imini oshiradi;
  • service discovery tugunlarning joriy manzillarini topadi;
  • monitoring, tracing va loglar bir so‘rovning bir nechta xizmatdagi yo‘lini ko‘rsatadi.

Microservice arxitekturasi taqsimlangan tizimning bir ko‘rinishi, lekin har distributed system microservice emas. Klasterli ma’lumotlar bazasi, kontent yetkazish tarmog‘i va sensorlar tarmog‘i ham taqsimlangan bo‘lishi mumkin.

Konsistensiya va mavjudlik

Ma’lumot bir nechta nusxada saqlansa, yangilanish barcha replikaga bir paytda yetib bormaydi. Strong consistency dan foydalanuvchi muvaffaqiyatli yozuvdan so‘ng yangi qiymatni ko‘rishni kutadi. Eventual consistency esa yangi yangilanish bo‘lmasa, nusxalar vaqt o‘tishi bilan bir qiymatga kelishini bildiradi.

CAP teoremasi tarmoq bo‘linishi yuz berganda tizim bir vaqtning o‘zida to‘liq consistency va availabilityni kafolatlay olmasligini ifodalaydi. Bu oddiy “uch xususiyatdan istalgan ikkitasini tanlash” shiori emas: partition taqsimlangan tarmoqda hisobga olinadi, tanlov esa bo‘linish paytidagi javob xatti-harakatiga taalluqli.

Muvofiqlashtirish va nosozlik

Leader election va konsensus algoritmlari tugunlarga umumiy qaror yoki jurnal tartibiga kelishga yordam beradi. Quorum ko‘pchilik nusxalar bilan ishlash orqali eski yoki ikki xil leader xavfini kamaytiradi. Retry vaqtinchalik xatoni yengadi, ammo dublikat so‘rov yaratishi mumkin; idempotent operatsiyalar va noyob identifikatorlar shu sababli muhim.

Circuit breaker nosoz xizmatga cheksiz so‘rov yuborishni cheklaydi, backpressure esa iste’molchi sig‘imidan ortiq oqimni boshqaradi. Replikatsiya komponent nosozligiga chidamlilik beradi, lekin bir xil dasturiy xato yoki noto‘g‘ri o‘chirish barcha nusxaga tarqalishi mumkin; u backup o‘rnini to‘liq bosmaydi.

Kuzatiluvchanlik

Bir foydalanuvchi so‘rovi ko‘plab xizmat va navbatdan o‘tgani uchun lokal logning o‘zi yetarli emas. Correlation ID, distributed tracing, metrikalar va markaziy loglar voqealarni bog‘laydi. Latency o‘rtacha qiymat bilan emas, percentile va tail latency bilan ham baholanadi. Tizimning to‘g‘ri ishlashi faqat alohida tugun sog‘lig‘i emas, yakuniy operatsiya natijasi bilan o‘lchanadi.

Vaqt va tartib

Ikki tugundagi wall-clock vaqt belgilarini solishtirish hodisalarning aniq sababiy tartibini bermaydi. Clock skew tufayli javob logda so‘rovdan oldin yozilgandek ko‘rinishi mumkin. Lamport clock hodisalar orasidagi happens-before munosabatiga mos logik tartib beradi, vector clock esa ayrim parallel o‘zgarishlarni ajratadi. Tashqi foydalanuvchiga ketma-ket ID kerak bo‘lsa, alohida coordinator yoki taqsimlangan identifikator sxemasi tanlanadi.

Bog‘liq tushunchalar

Consensus, Replication, CAP theorem, Partial failure, Quorum, Distributed tracing