Bosh sahifa Wiki Distributed computing

Distributed computing

Distributed computing — bitta vazifani tarmoq orqali bog‘langan bir nechta mustaqil kompyuter yoki jarayon hamkorlikda bajaradigan hisoblash modelidir. Tizim tashqi foydalanuvchiga yagona xizmatdek ko‘rinishi mumkin, ammo uning tugunlari alohida xotira, soat va nosozlik holatiga ega. Masshtablash imkoniyati bilan birga aloqa kechikishi, qisman nosozlik va izchillik muammolari paydo bo‘ladi.

Asosiy arxitekturalar

Clientserver modelida mijoz so‘rov yuboradi, markaziy yoki replikatsiyalangan server javob beradi. Peer-to-peer tizimda tugunlar bir xil darajada resurs taqdim etadi. Master–worker hisoblashni vazifalarga ajratib, workerlar orasida taqsimlaydi. Cluster computing odatda bir data center ichidagi boshqariladigan mashinalardan, grid esa turli tashkilot va hudud resurslaridan foydalanishi mumkin.

MapReduce katta datasetni bo‘laklarda map qiladi, keyin kalitlar bo‘yicha shuffle va reduce bajaradi. Stream processing cheksiz event oqimini past kechikishda qayta ishlaydi. Actor model holatni actor ichida saqlab, xabar almashuvini asosiy koordinatsiya usuli qiladi. Har model muayyan workload va consistency ehtiyojiga mos.

Qisman nosozlik

Bitta jarayon boshqasidan javob olmasa, u ishlamayaptimi, tarmoq uzildimi yoki faqat sekinmi — aniq bilolmaydi. Timeout shubhani bildiradi, haqiqatni emas. Retry bir amalni takror bajarishi mumkin; idempotency key va deduplikatsiya zararli dublikatni kamaytiradi. Heartbeat tugun tirikligi haqida signal beradi, lekin uning barcha ichki funksiyasi sog‘lomligini kafolatlamaydi.

Replikatsiya ma’lumot va xizmatni bir nechta tugunda saqlaydi. Leader–follower yozuvni bir yetakchiga yo‘naltiradi; quorum tizimi o‘qish va yozish uchun bir nechta replika javobini talab qiladi. Network partition paytida availability va kuchli consistency orasida tanlov yuzaga kelishi mumkin. Konsensus algoritmi a’zolik va jurnal tartibi bo‘yicha tugunlarni kelishtiradi.

Vaqt va tartib

Mashinalarning fizik soatlari aynan bir xil emas. NTP farqni kamaytiradi, lekin eventlarning qat’iy global tartibini bermaydi. Lamport clock sababiy tartib uchun mantiqiy son ishlatadi; vector clock concurrent hodisalarni farqlashi mumkin. Ko‘plab database tizimlari monoton log index yoki hybrid logical clockdan foydalanadi.

Message delivery at-most-once, at-least-once yoki amaliy cheklovlar bilan exactly-once semantikasiga ega bo‘lishi mumkin. “Exactly once” odatda source offset va output commitni yagona tranzaksion chegarada bog‘lashni talab qiladi; butun tashqi dunyodagi side effect avtomatik atomar bo‘lmaydi.

Masshtablash va joylashuv

Horizontal scaling tugun qo‘shadi, vertical scaling bitta tugun resursini oshiradi. Ma’lumot partition key bo‘yicha shardlanadi. Yomon kalit hot shard yaratadi, qayta balans esa tarmoq va disk yukini oshiradi. Data locality hisoblashni shardga yaqin qo‘yib shuffle va egressni kamaytiradi.

Observability so‘rovni tugunlar bo‘ylab trace qiladi, loglarga correlation ID qo‘shadi va queue, saturation, error hamda tail latency ni kuzatadi. Testlar faqat normal oqimni emas, paket kechikishi, duplicate, tugun restarti va disk to‘lishini ham qamrab oladi. Taqsimlangan tizimning murakkabligi tugunlar sonidan ko‘ra ular orasidagi holat va kafolatlarda namoyon bo‘ladi.

Determinism va qayta ijro

Bir xil input turli task tartibida qayta ishlanganda ayni natija berishi recoveryni soddalashtiradi. Floating-point yig‘indisi tartibga bog‘liq bo‘lishi, tashqi vaqt yoki tasodifiy son esa attemptlar orasida farq qilishi mumkin. Framework input snapshot, seed va kod versiyasini saqlaydi. Side effectlar task hisobidan ajratilib, commit protokoli orqali faqat qabul qilingan attempt natijasi nashr qilinadi. Bu speculative execution va retry paytida ayniqsa muhim.

Bog‘liq tushunchalar

Consensus, Replication, Partition tolerance, Distributed system, MapReduce, Logical clock, Fault tolerance