1-deadline. Taqsimlangan algoritmlar va tizimlar (1)
6 – Amaliy mashg‘ulot. TAQSIMLANGAN TIZIMLARDA ISHONCHLILIK MASALASI. REPLIKATSIYA..
Reja Taqsimlangan tizimlarda ishonchlilik masalalari
RPC
Ishonchli tranzaksiyani amalga oshirish
Bunga misol qilib, sistemali qo‘llashni xuddi abstraksiyasi kabi qayta ishlashda foydali programmalar harakatini rad etishi mumkin, (Remote procedure Call, RPC) yo‘q qilingan chaqiruvni protseduralarini xizmat qilishi tushuniladi. RPC abstraksiyasidan foydalanish barcha aloqa kanallarini xatolaridan xovotir olishdan chalg‘itishi mumkin, har xil EVM ma’lumotlarini taqdim etishda ikki amaliy sistemani harakatiga kelishiladi, formatdagi farqi har xil EVM ma’lumotlarida taqdim etilgan. Sistemali RPC qo‘llashda barcha talab qilinadigan narsalar bular, protseduraga parametr bilan murojaat qilish ko‘rinishidagi savollarni shakllantiradi, tizimga pastki bosqich ta’sirini berkitadi.
Agar xatolarni boshqarishni qo‘llash va uzilishlarni ta’minlash kerak bo‘lsa, protsedurani yo‘q qilingan chaqiruvini tranzaksiyali variantidan foydalanish mumkin. Tranzaksiyali chaqiruvni amalga oshirishda, chaqiruv xolati yoki o‘zaro ta’sirdan xovotir olmasa ham bo‘ladi, agar protsessda ularni amalga oshirishda xatolikka yo‘l qo‘yilsa. Agarda taklif yoki uning qandaydir qismi ishga tushmasa, tranzaksiyali garantiya shuni bildiradiki, hech qanday kutilmagan qo‘shimcha effektlarni paydo qilmaydi. Tranzaksiyali garantiya faqatgina amaliy bosqichda beriladi, ya’ni bir necha yo‘q qilingan chaqiruv protseduralarini izdosh munosabati. Bu sezilarli darajada murakkab nazoratni taklif qiladi, garantiyadan ko‘ra odatda transport bosqichida (masalan, TSR transport protokolida, xattoki uni T/TSR tranzaksiyali variantida ham, alohida paketli ma’lumotlarni etkazib berishni kafolatlaydi, alohida xabarlarni ham tashkil etadi).
Bunday soddalashtirishni o‘zaro ta’sir imkoniyatlari, rivojlangan programmalarni ta’minlashga ega: interfeys tilini ta’rifi, shu til tarnslyasiyasi va katta miqdordagi biblioteka, protseduralarni chaqiruvini yo‘q qilish uchun kerak bo‘lgan funksionallikni amalga oshirish. Bu programmalarni qismidan programmalarni qayta ishlashda foydalaniladi, boshqa zaruriylari chaqiruv momentida bajariladi. Sistemali qo‘llash quyidagi ko‘rinishlari qabul qilishi mumkin:
Yo‘q qilingan chaqiruv protseduralari bazasi sistemalari: O‘zaro ta’sirni umumiy formasi. Xozirgi vaqtda RPC sistemalari programmali ta’minlash tizimini boshqa formalariga asosan yotadi, tizimli xizmatlarni ham o‘z ichiga oladi.
Tranzaksiyali monitorlar eng umidli va eng barqaror texnologiya amaliy sistema integratsiyasida qo‘llaniladi. Tranzaksiyali monitorlar yo‘q qilingan protseduralarni tranzaksiyali kengayishi bilan bajaradi. Realizatsiyaga bog‘liq bo‘lgan ikki yoki uch qavatli arxitektura, tranzaksiyali monitorlar og‘ir va engil qilinadi. Engil monitorlar baza ma’lumotlarini RPC – interfeysini ta’minlaydi, og‘iri esa o‘zi bilan birga eng ma’noli sistemalarni katta sondagi programmali instrumentni taqdim etadi, har doim instrumentni operatsiyali sistemaga o‘tkazadi.
Ob’ekt brokerlari RPC sistemalari protsedurali tilni programmalashtirish vaqtida paydo bo‘lgan. Ob’ektni orientirlashtirishga yondoshuv ob’ekt brokerlarini paydo bo‘lishiga olib keldi. Bu platformalar o‘zining spetsifikatsiyasi bilan ancha rivojlangan, ko‘pchilik RPC sistemalariga qaraganda, lekin realizatsiya termini ulardan kamroq farq qiladi. Lekin amaliyotda ularning barchasi o‘zining funksiyasining realizatsiyasi uchun RPC mexanizmidan foydalanadi.
Ob’ekt monitorlari ob’ekt brokerlarini funksionalligini rivojlanishi shubhasiz, uning katta qismini tranzaksiyali monitorda realizatsiya qilinganligidir. O‘sha vaqtda tranzaksiyali monitorlarni protsedurali tilga o‘tkazish kerak bo‘ldi va ob’ektli orientirlangan til programmalashtirildi. Paydo bo‘lgan sistemalar ob’ekt monitorlari deb nomlana boshladi.
Xabarlarni almashtirish bazasini sistemalari Birinchidan yana RPC sistemasida ma’lum bo‘lishicha, sinxronli o‘zaro ta’sir har doim ham zarur emas. Asinxronli o‘zaro ta’sir o‘z navbatida saqlangan sistemani tranzaksiyali monitor bilan ta’minlaydi. Biroq bunday sistemalar o‘z navbatida o‘zining bahosiga ega. Ularni (Message Oriented Middleware, MOM) xabarni almashtirishga asosan sistema deb atashni boshlashdi. Ular o‘z navbatida tranzaksiyali kirishni ta’minlardi, saqlangan tartib va katta miqdorda lokal va yo‘q qilingan tartib yozuvida soddalashtirilgan o‘qish uchun.
Xabarlar brokerlari bu alohida formali sistema xabarlarni almashtirishga asosan, qo‘shimcha o‘zlashtirishni bajaruvchi va sistema orqali tartib bilan o‘tuvchi xabarlarni filtrlash. Xabarlarni ushlab turish asosida ular qabul qiluvchilarini dinamikli tanlab olishi mumkin. Ularni tartibli sistemadan farqlab turuvchi yagona xolat, bu navbatga qo‘shimcha funksionallikni qo‘shilganligidir, bu esa asinxron o‘zaro ta’sirini murakkablashishiga yo‘l qo‘yib beradi.
2.2. Protsedurani yo‘q qilingan chaqiruvini realizatsiyasini prinsiplari
RPC modeli bu asosiy modellardan biri, sistemali qo‘llashni programmali ta’minlovchi sifatida qo‘llaniladi. Birinchi bo‘lib u ikki qavatli “klient/server” turidagi sistemada qo‘llanilgan: klient serverda ishlovchi protsedurani chaqiradi. Ahamiyatliligi shundaki, klient uchun bu chaqiruv lokalli protseduralarini chaqiruvida tafovutga ega emas. RPC modeli klientni (chaqiruv programmasi) va (chaqiruv protsedurasini yo‘q qilishni amalga oshiruvchi programmasi) serverlarini tushunib etishiga olib keldi. SHuningdek, modelda boshqa konsepsiyalar ham taqdim qilingan, quyidagilar xozirgacha keng qo‘llanilmoqda: interfeys tilini ta’rifi, nom va katalogni olib borish xazmati, dinamikli bog‘lanish, interfeys xizmati va boshqalar.
RPC modelini sinxronizatsiyasini qo‘llashda, aloqani tiklash, parametrlarni uzatish va natijalarni hammasi klientdan sir saqlagan holda bajariladi. Bu birinchi model musaffolik va xalqarotilni interoperabellikga erishishiga yo‘l qo‘yib beradi, past bosqichli protokol yordamida xabarlarni almashtirishni rad etadi.
Taqsimlangan sistemalarni klientli va serverli qismi yo‘q qilingan chaqiruv protsedurasi yordamida o‘zaro ta’sirga ega bo‘ladi, bir-biriga mustaqil realizatsiyani amalga oshiradi, bu tilni programmalashtirish realizatsiyasidan qisman foydalaniladi. An’anaviy sistemada murojaat etishda programmalar bir tilda yozilgan, protseduraga esa boshqa tilda yozilgan, bunday murojaatni ko‘p texnik detalini bilish kerak: har xil tildagi turli ma’lumot tavsilotlarini taqdim etish (har xil kompilyatordan foydalanishda), elementlarni solishtirish choralari va murakkab strukturada bo‘shliqlarni to‘ldirish, oynali mexanizm detali. Ko‘p karrali murakkabliklar o‘sgan bo‘lar edi, agarda programmalarni o‘zaro ta’siri shunday tashkillashtirilgan bo‘lganda, faqatgina har xil tilda yozilganlarini emas, shuningdek, har xil hisoblovchi mashinalarda ishlovchilarni ham. Bularning hammasidan yo‘q qilingan chaqiruv protseduralarining modeli xalos bo‘lishga yo‘l qilib beradi. Programmistlar tillarni va programmali paradigmni o‘zgartirmasdan taqsimlangan taklifni qurish imkoniyatlarini olishdi.
RPC modeli taqsimlangan sistemada ko‘pchilik yadrolar namoyon bo‘ladi. Bu modelda ko‘p kech kolgan modellarni bir qismini paydo bo‘lishi uchun asosdir, (Remote Method Invocation, RMI) yo‘q qilingan chaqiruv metodini modeli va (stored procedures) protseduralarni saqlash baza ma’lumotlari. Ko‘pincha RPC modeli murakkab formali o‘zaro ta’sir realizatsiyasi uchun past bosqichda foydalaniladi.
Yo‘q qilingan chaqiruv protsessi quyidagi obrazlarda namoyon bo‘ladi:
Klient mashinasidagi protsess server mashinasiga protsedurani chaqiradi.
Klient protsessi olidndan to‘xtatiladi.
Server mashinasida chaqirilgan protseduralarni bajarish protsessini qo‘yib yuboradi.
Natijalar klient mashinasiga berib yuboriladi.
Klient protsessi yangilanadi.
Tavsiflangan mexanizmda ko‘p murakkabliklar: har xil adresli klient va server, parametrlar va natijalarni uzatish zaruriyati, qurilmalarni rad etish va qayta ishlash zaruriyati. Qo‘shimcha murakkabliklar shunga olib keladiki, dasturlash tilidagi protseduralar dasturlari parametrlarining bir qismi qiymatlari bo‘yicha, qolgan qismi sifat parametrlari sifatida uzatiladigan qiymatlariga havola bilan uzatilishi mumkin.
RPC modelini realizatsiya qilishda barcha qiyinchiliklarni engib o‘tishi kerak, shuning uchun oldindan, yo‘q qilingan protsedurani bajarishdan ko‘ra, oldindan tayyorgarlikni o‘tkazish kerak.
Birinchi qadam protseduralarni interfeysini ta’riflash bo‘lish kerak, (IDL) interfeys tili yordamida nima qilinadi. Bu ta’riflash protseduralar parametri xaqida qisqacha tavsif beradi, ishdan keyin ular bajarish va qaytaruvchilarga beriladi. IDL tilidagi protseduralarni ta’riflashda xuddi servis spetsifikatsiyasidek ko‘rib chiqish mumkin.
Ikkinchi qadamda esa yaratilgan translyasiya tavsifi amalga oshiriladi. RPC mexanizmidagi barcha realizatsiyalar, xoxlagan integratsion platforma, RPC dan foydalanishda yoki konsepsiyada maxsus interfeysli translyatorni saqlaydi. Translyasiya natijasida quyidagilar yaratiladi:
Klientli perexodnik: har bir protseduralar sarlavhasi IDL faylida berilgan protseduralar uchun (stub) alohida klientli perexodnikni yaratishga olib keladi. Perexodnik - bu translyasiyadan keyin klient programmasiga birlashadigan programmadir. Klientli perexodnik tarkibidan serverni qidirish programmalari kelib chiqadi, ma’lumotlarni formatlash, server bilan o‘zaro ta’siri, protseduralarni chaqirilgan klienti parametrlarni qaytish ko‘rinishida javoblarni qabul qilishi va javobni uzatishi. Klient bilan ma’lumotlarni formatlash ikki protsessdan tashkil topgan: marshalinga va serilizatsiya. Marshaling kodirovkalashda va qabul qilingan xabar formatini aniq sistemada ma’lumotlarni qadoqlashdir. Serializatsiya baytlarni ketma – ketligini xabarlarda o‘zgartirishdan tashkil topgan.
Serverli perexodnik: klientliga o‘xshash bo‘lib, ammo chaqiruvni serverli qismini amalga oshiradi. U quyidagi programmalardan tashkil topgan, klientdan olgan so‘rovni amalga oshiradi, (oynali o‘zgartirish, ya’ni, deserializatsiya va demarshalinga) ma’lumotlarini formatlash, serverda realizatsiyalangan real protseduralar chaqiruvi, shuningdek, natijalarni klientga qaytarish. Serverli perexodnik translyasiyasidan keyin klientli prexodnikka o‘xshab server programmasiga birlashadi. Barcha serverli programmalardan, protseduralar realizatsiyasini qo‘shgan holda, yo‘q qilingan klientni chaqiruvida, klientni realizatsiya qilishda foydalanilgan til har bir tilda bo‘lishi talab qilinmaydi, xalqaro tilni interoperabelligiga yuqori darajada muhim ahamiyatga egaligiga erishiladi, ya’ni, programmalarni o‘zaro ta’sirini imkoniyatlarini amalga oshiradi, turli xilda yozilgan tillarni programmalashtiradi.
Programmali dalil va shablonlar: IDL tili va translyator undan protseduralarni qayta ishlashni olib borishga yordam beradi, yordam beruvchi fayllarni yaratadi. Masalan, RPC sistemasini birinchi versiyasi Si tilida yaratilgan, shuning uchun klientli va serverli perexodnikka qo‘shimcha IDL translyatori (*.h.) matn-fayllarini yaratdi. Ko‘p zamonaviy translyatorlar server uchun programma shablonlarini yuzaga keltiradi, masalan, protsedura matnini programmalarini tarkibini, undan keyin qayta ishlovchini o‘zi bu protseduralarni ralizatsiyasini yaratishi kerak.
Qachonki klient yo‘q qilingan protsedurani chaqirganda, haqiqatdan protseduralarni lokal chaqiruvini bajaradi, perexodnikni bir qismi bo‘lib namoyon bo‘ladi. Klientli perexodnikni chaqiruv parametrlari standart ko‘rinishda qabul qiladi, lekin real protsedurani ta’siri bajarilmaydi. Buni o‘rniga perexodnik serverni qidiradi va kerakli ma’lumotlarni formatlaydi. Kommunikatsiyali kanalga xabrni jo‘natishdan oldin marshaling va serializatsiya bajariladi, qalub qiluvchi xabarni tushunish uchun nima qiladi. Undan keyin server bilan bog‘lanish o‘rnatiladi, klient blokirovka qilinadi va natijani kutadi.