Internet Derazalar Android
Kengaytirmoq

Tuzatish: Xizmat "Masofadagi qo'ng'iroq protseduralari (RPC)" xizmati ishga tushirilmaydi. Masofaviy protseduralar (RPC - masofadan boshqarish pulti) masofadan kirish RPC

Masofaviy protsessorlar (RPC) raqamli protsessorga qo'ng'iroq qiling

Masofaviy protsessor Call - RPC (masofadan boshqarish pulti - RPC) - bu tarmoq ichidagi barcha mashinadagi taniqli va tushunarli nazorat mexanizmini va dasturni tarmoq ichidagi barcha mashinalarni tarmoq orqali uzatishga mo'ljallangan. Masofadan qo'ng'iroq qilish vositalari taqsimlangan hisoblashni tashkil etishni osonlashtirishga mo'ljallangan. RPC-dan foydalanishning eng katta samaradorligi cheklangan komponentlar o'rtasida oz vaqt va uzluksiz ma'lumotlar bilan interfaol aloqada bo'lgan dasturlarda erishiladi. Bunday dasturlar RPC-yo'naltirilgan deb ataladi.

Mahalliy protseduralar qo'ng'irog'ining o'ziga xos xususiyatlari:

Asimmetriya, ya'ni o'zaro ta'sir qiluvchi partiyalardan biri tashabbuskor; Sinxroniklik, ya'ni qo'ng'iroq qilish tartibining ijrosi, agar u so'rov o'rniga to'xtagan bo'lsa va faqat chaqirilgan protseduradan qaytsa, davom etadi.

Masofaviy qo'ng'iroqlarni amalga oshirish mahalliy qo'ng'iroqlar muammolarini amalga oshirish bilan ancha murakkablashadi. Qo'ng'iroqlar va protseduralar turli xil mashinalarda o'tkazilgandan so'ng, ular turli xil manzil maydonlariga ega, ayniqsa mashinalar bir xil emas, balki parametrlar va natijalarni uzatishda muammolarni keltirib chiqaradi. RPC umumiy xotirani hisoblay olmaydi, demak RPC parametrlari hech bo'lmagan xotira kameralarida va parametrli qiymatlardan boshqasiga nusxa ko'chirilishi kerak. Keyingi imtiyozlar Mahalliy qo'ng'iroqdan RPC, bu aniq aloqa tizimidan foydalanadi, ammo bu aniq muolajalar yoki protseduralarda aniq ko'rinmasligi kerak. Soflik qo'shimcha muammolarni keltirib chiqaradi. Bitta mashinada keltirilgan dasturning ijrosi va bir mashina bitta jarayonda amalga oshiriladi. Ammo kamida ikkita jarayonlar RPCni amalga oshirishda ishtirok etadi - har bir mashinada. Agar ulardan biri tugashga to'g'ri kelsa, quyidagi holatlar ro'y berishi mumkin: sababli protseduralar tasodifiy ravishda amalga oshirilsa va masofadan turib, masofadan turib javobni muvaffaqiyatsiz bajaradi protseduralar.

Bundan tashqari, dasturlash tillar va operatsion muhitning turli xilligi bilan bog'liq bir qator muammolar mavjud: ma'lumotlar tuzilmalari va har qanday dasturlash protseduralari har qanday dasturlash tilida qo'llab-quvvatlanmoqda.

Bu va boshqa ba'zi muammolar ko'plab tarqatilgan operatsion tizimlarning keng tarqalgan keng tarqalgan texnologiyalarini hal qiladi.

Asosiy RPC operatsiyalari

RPC ishini tushunish uchun birinchi navbatda mashina operatori odatdagi mashinada o'tkaziladigan muntazam ravishda foydalanish uchun birinchi navbatda ko'rib chiqing. Masalan, tizim qo'ng'irog'i bo'ladi

Hisoblash \u003d o'qish (FD, Buf, Nebetes);

bu erda FD butun son
Buf - belgilar qatoriga,
Nbites butun son.

Ushbu protsedura parametrlarni teskari tartibda qoziqqa tushirish (3.1-rasm) deb qo'ng'iroq qilish. O'qish qo'ng'irog'idan keyin u reestrga qaytarilgandan so'ng, qaytarish manzilini o'zgartiradi va uni qaytargan parametrlarni o'z ichiga olgan qo'ng'iroq protsedurasini boshqarishni qaytaradi dastlabki holat. E'tibor bering, parametrlar bilan parametrlar bilan yoki ma'lumot bilan yoki qiymat bo'yicha (qiymat bo'yicha). Ushbu qoidalarga nisbatan qadriyatlar mahalliy o'zgaruvchilar boshlanadi. Ushbu protsedura ularni o'zgartirishi mumkin va bu qo'ng'iroq qiluvchilar protsedurasida ushbu o'zgaruvchining asl nusxalariga ta'sir qilmaydi.

Agar o'zgaruvchiga ko'rsatgich "o'zgaruvchan" deb nomlangan protseduraga uzatilsa, unda ushbu o'zgaruvchining qiymatidagi o'zgarishlar ushbu o'zgaruvchining qiymatidagi o'zgarishlar ushbu o'zgaruvchining qiymatidagi o'zgarishlarni va sababli protseduraning o'zgarishi sabab bo'ladi. Bu haqiqat RPC uchun juda katta.

Shuningdek, S. da ishlatilmagan boshqa parametrlarni uzatish mexanizmi mavjud, u call-ni nusxalash / tiklash va nusxalash saylov dasturi Qiymat shaklida stekdagi o'zgaruvchilar, keyin qo'ng'iroqni qabul qilish tartibining asl qiymatlari ustidan qabul qilingandan keyin orqaga qaytish.

Fikrlarni ishlatish uchun parametrlarni yuborishning qaysi mexanizmi Til ishlab chiqaruvchilari tomonidan qabul qilinadi. Ba'zan u uzatiladigan ma'lumotlar turiga bog'liq. Masalan,, masalan, butun va boshqa skalalar ma'lumotlari bilan tilda har doim qiymat va massivlar bilan uzatiladi.

Anjir. 3.1. a) o'qishni tekshirishdan oldin stakan;
b) protsedura davomida stek;
c) qo'ng'iroq qilish dasturiga qaytgandan so'ng

RPC-ga asoslangan g'oya - bu mahalliy protseduraga, shuningdek, qo'ng'iroqqa ko'rinadigan masofaviy protsessorga qo'ng'iroq qilish. Boshqacha aytganda - RPC shaffof qilish uchun: Qo'ng'iroqchi deb nomlangan protsedura boshqa mashinada va aksincha ekanligini bilish kerak emas.

RPC quyidagicha oshkoralikka erishadi. Ushbu protsedura chindan ham masofadan turib, kutubxona mahalliy protseduraning o'rniga, mijozning stubiga (stub - plug) yuborilgan protseduraning boshqa versiyasi joylashtiriladi. Dastlabki protsedura kabi, stub qo'ng'iroq tartibida (3.1-rasmda bo'lgani kabi), shuningdek, yadroga kirish paytida ham xalaqit beriladi. Faqat original protseduradan farqli o'laroq, u registrlardagi parametrlarni joylashtirmaydi va yadrodan ma'lumotni so'ramaydi, aksincha, masofaviy mashinani yadroga yuborish uchun xabar keltirib chiqaradi.

RPCning qatl etilishi bosqichlari

Ushbu protsedurani masofadan qo'ng'iroq qilishda dasturiy tarkibiy qismlarning o'zaro ta'siri 3.2-rasmda keltirilgan. Mijozning shahobasi mijoz dasturi tomonidan chaqirilgandan so'ng, uning birinchi vazifasi buferni yuborish orqali to'ldirishdir. Ba'zi tizimlarda mijoz stubida har bir yangi so'rov kelib tushganidan keyin har safar to'ldirilgan bir marta to'ldirilgan. Boshqa tizimlarda xabar buferi individual xabar maydonlari uchun bufer puli va bu tamponlar allaqachon to'ldirilgan. Ushbu usul, ayniqsa, paketdan iborat formatda bo'lsa, ishlarga mos keladi katta raqam Ushbu maydonlar, ammo ushbu sohalarning ko'plarining qadriyatlari qo'ng'iroqqa qo'ng'iroq qilishdan o'zgarmaydi.

Keyin parametrlar tegishli formatga o'zgartirilishi kerak va xabar buferiga kiritiladi. Shu nuqtada, xabar uzatish uchun tayyor, shuning uchun yadro qo'ng'iroqning uzilishi amalga oshiriladi.

Anjir. 3.2. Masofaviy protsessor

Kerrel nazoratni qabul qilganda, u kontekstlarni o'zgartiradi, protsessor registrlari va xotira kartasini saqlaydi (sahifa tavsifi), yadro rejimida ishlash uchun ishlatiladigan yangi xotira kartasini o'rnatadi. Kernelning kontekstlari va undan farqli o'laroq, yadro o'z manziliga ega bo'lishi uchun, manzilga o'z manziliga mos keladi, manzil manzili (a, boshqa sarlavha maydonlarini) eslab qolishi kerak va u bo'lishi kerak uning tarmoq interfeysiga o'tkazildi. Bu mijoz tomonida ishlashni yakunlaydi. Transmissiya taymeri yoqilgan va yadrolar javobni tsiklik tekshiruvini o'tkazishi yoki ijro etish uchun boshqa jarayonni tanlaydigan rejalashtiruvchisining nazoratini o'tkazishi mumkin. Birinchi holda, so'rov tezlashib boradi, ammo mo'riptmentlash yo'q.

Server tomonida, kiruvchi bitlar qabul qiluvchi vositasi yoki o'rnatilgan bufer yoki RAMda joylashtiriladi. Barcha ma'lumotlar olinganda, to'sig'i hosil bo'ladi. Bo'shashgan ishlov beruvchi paket ma'lumotlarining to'g'riligini tekshiradi va pichoqni yuqtirish kerakligini aniqlaydi. Agar biron bir stublardan hech biri bu paketni kutmasa, ishlov beruvchini buferga yoki hatto rad qilish kerak. Agar kutish stubi bo'lsa, xabar unga ko'chiriladi. Va nihoyat, kontekstlar o'zgaradi, natijada stub qabul qilish uchun qo'ng'iroq qilgan paytda, ularda bo'lgan qadriyatlarni qabul qilish va xotira kartasi paydo bo'ladi.

Endi server stub ish boshlaydi. U parametrlarni ochib, ularni mos ravishda suyakka joylashtiradi. Hamma narsa tayyor bo'lganda, server qo'ng'iroq qiladi. Jarayonni tugatgandan so'ng, server natijalarni mijozga uzatadi. Buning uchun yuqorida tavsiflangan barcha bosqichlar faqat teskari tartibda amalga oshiriladi.

3.3-rasmda har bir RPC qo'ng'irog'i uchun amalga oshirilishi kerak bo'lgan buyruq ketma-ketligini ko'rsatadi va 3,4-rasm - RPCning umumiy hajmining qaysi qismi tavsiflangan 14 bosqichini bajarishga sarflanadi. Tadqiqotlar o't o'chiruvchi tomonidan o'tkazilgan va beshta protsessorlarning mavjudligi aniqlangan bo'lsa ham, o'lchash natijalariga ta'sir ko'rsatgan bo'lsa ham, bu RPCning ijro etish jarayonining umumiy g'oyasini beradi.

Anjir. 3.3. RPC protsedurasini ijro etish bosqichlari

Anjir. 3.4. RPCning 14 bosqichida vaqtni taqsimlash

1. Qo'ng'iroqqa qo'ng'iroq qiling

2. Buferni tayyorlang

3. Paket parametrlari

4. Sarlavha maydonini to'ldiring

5. Xabarda tekshiruv sumkasini hisoblang

6. yadroga aralashish

7. Bajarish uchun paketning navbati

8. Xabarni qbus avtobus boshqaruvchisi-ga o'tkazish

9. Ethernet uchun uzatish vaqti

10. Tekshiruvchidan paket oling

11. Qayta ishlash tartibi

12. Cheksumni hisoblash

13. Foydalanuvchi bo'sh joyiga o'tish konteksti

14. Server stubini bajarish

Dinamik bog'lash

Mijoz qanday qilib serverning manzilini belgilaydi degan savolni ko'rib chiqing. Ushbu muammoni hal qilish usullaridan biri bu mijoz dasturida serverning tarmoq manzilidan bemalol foydalanishdir. Ushbu yondashuvning yo'qligi uning favqulodda harakati: server harakatlanayotganda yoki ushbu va boshqa ishlarda interfeys o'zgarganda yoki boshqa holatlar o'zgarganda, ulardan foydalanilgan barcha dasturlarni qayta tuzatish kerak Server manzilining qat'iy vazifasi. Ushbu muammolardan qochish uchun ba'zi tarqatilgan tizimlarda dinamik bog'lanish ishlatiladi.

Dinamik bog'lashning dastlabki lahzasi serverning rasmiy ta'rifi (spetsifikatsiyasi). Spinsifikatsiya fayl serverining ismini, mijozlar uchun ushbu server tomonidan taqdim etilgan protseduralar raqami va protseduralari ro'yxati (3.5-rasm). Har bir protseduraning uchun uning parametr serverga nisbatan kirish yoki chiqish parametrini ko'rsatuvchi ko'rsatmalaridan iborat. Ba'zi parametrlar bir vaqtning o'zida kiritish va chiqish bo'lishi mumkin - Masalan, mijozga serverga yuborilgan ma'lum bir qator u erda o'zgartirilgan va keyin mijozga qaytariladi (nusxa ko'chirish / tiklash).

Anjir. 3.5. RPC server spetsifikatsiyasi

Rasmiy server spetsifikatsiyasi mijozlar va server pichoqlarini yaratadigan Staby generator dasturi uchun manba ma'lumotlari sifatida ishlatiladi. Keyin ular tegishli kutubxonalarga joylashtirilgan. Foydalanuvchi (Mijoz) dasturi server spetsifikatsiyasida belgilangan har qanday tartibda belgilangan har qanday tartibda belgilangan tartibda ikki tomonlama protsedura o'zaro kodeksi bilan bog'liq. Shunga o'xshab, server tuzilganda server pichoqlari u bilan bog'liq.

Serverni ishga tushirganingizda, uning birinchi harakati - bu Serverning "OHM" deb nomlangan maxsus dastur bilan uning server interfeysini o'tkazilishi, uning nomi Server, Noyob identifikatorini o'z ichiga oladi Va haydovchilarning joylashuvišish shartnomasi. Belgilangan deskriptor tizimli mustaqil va IP, Ethernet, x.500 yoki boshqa manzilni o'z ichiga olishi mumkin. Bundan tashqari, autentifikatsiya kabi boshqa ma'lumotlarni o'z ichiga olishi mumkin.

Mijoz birinchi marta masofadan protseduralardan birini chaqirganda, masalan, o'qing, mijoz stubi u serverga hali ulanmaganligini va interfeys importini so'rab yuboradi va xabar Batinder dasturini yuboradi. kerakli versiya Kerakli server. Agar bunday server mavjud bo'lsa, Biger belgi va noyob identifikatorni mijozning pichoqiga o'tkazadi.

So'rovda xabar yuborayotganda mijoz pichoqchani manzil sifatida ishlatadi. Ushbu xabarda server yadroidan foydalanilgan parametrlar va noyob identifikatorni o'z ichiga olgan parametrlar va ushbu mashinada bir nechta mashinada bo'lsa, kerakli serverga yuborilishi kerak.

Import / eksport interfeyslarida tashkil etilgan ushbu usul yuqori moslashuvchanlikka ega. Masalan, bir xil interfeysni qo'llab-quvvatlaydigan bir nechta serverlar bo'lishi mumkin va mijozlar tasodifiy serverlardan tarqatiladi. Ushbu usul doirasida serverlarni davriy ravishda o'rganish mumkin, ularning ishlashini tahlil qilish va rad etilgan taqdirda, avtomatik o'chirishbu tizimning umumiy muvaffaqiyatsizligini oshiradi. Ushbu usul shuningdek mijoz autentifikatsiyasini ham qo'llab-quvvatlashi mumkin. Masalan, server uni faqat mijozlar tomonidan ma'lum bir ro'yxatdagi foydalanish mumkinligini aniqlashi mumkin.

Biroq, dinamik bog'lanish eksport va import interfeyslari uchun qo'shimcha xarajatlar (vaqtincha xarajatlar). Ushbu xarajatlarning kattaligi ahamiyatli bo'lishi mumkin, chunki aksariyat mijozlar jarayoni qisqa vaqt ichida mavjud va har safar jarayon jarayonni qayta ishga tushirish kerak. Bundan tashqari, Bilag' dasturi katta taqsimlangan tizimlarda shisha bilan shug'ullanishi va shunga o'xshash maqsadli dasturlarni yaratish, shuningdek, jarayonlarni yaratish va sinxronlashtirish borligini ham ko'paytiradi.

Xavfsizlik holatida RPC semantika

Ideal holda, RPC to'g'ri ishlaydi va qulashi mumkin bo'lsa. Qo'riqchilarning quyidagi sinflarini ko'rib chiqing:

Mijoz serverning joylashuvini, masalan, kerakli server ishlamayotgan bo'lsa yoki mijoz dasturi uzoq vaqt davomida tuzilganligi sababli eski versiyasi Server interfeysi. Bunday holda, mijozning so'roviga javoban xabarda xato kodi mavjud. Mijozdan serverga so'rovni yo'qotdi. Eng oson echim - ma'lum bir vaqtdan keyin so'rovni takrorlang. Mijozga serverdan yo'qolgan javob. Ushbu parametr avvalgisidan ancha murakkabroq, chunki ba'zi protseduralar tebtsiz emas. Idempotents protsedura deb ataladi, ularni bajarish so'rovi bir necha bor takrorlanishi mumkin va natijada natija o'zgarmaydi. Bunday protsedura misoli faylni o'qish mumkin. Ammo bank hisobvarag'idan ba'zi miqdorni olib tashlash tartibi - bu bema'ni emas va javob yo'qotgan bo'lsa, takroriy so'rov mijozning hisob raqamini sezilarli darajada o'zgartirishi mumkin. Mumkin bo'lgan echimlardan biri bu barcha protseduralarni ITMPEMP vositasiga olib kelishdir. Biroq, amalda har doim ham muvaffaqiyatga erisha olmaydi, shuning uchun boshqa usuldan foydalanish mumkin - mijoz yadrosi tomonidan barcha so'rovlarning izchil raqami. Server Kernel har bir mijozning eng so'nggi so'rovining sonini eslaydi va har bir so'rovni qabul qilish tahlilni amalga oshiradi - bu so'rov birlamchi yoki takrorlanmaydimi yoki yo'qmi. Server so'rov olgandan keyin qulab tushdi. Bu, shuningdek, mulkdorlik uchun juda muhim, ammo afsuski, raqamlarni raqamlash so'rovlari bilan talab qilinmaydi. Bunday holda, ishlamay qolganda - operatsiyadan oldin yoki undan keyin u muhim bo'ladi. Ammo mijoz yadro bu holatlarni tana olmaydi, faqat javob vaqtidan o'tganligi ma'lum. Ushbu muammoga uchta yondashuv mavjud: Server qayta boshlang va operatsiyani qayta bajarishga harakat qiling. Ushbu yondashuv RPC kamida bir marta tugamaguncha va ehtimol ko'proq narsani tugatdi. Darhol xato uchun ariza haqida xabar bering. Ushbu yondashuv RPCni bir necha marta bajarganligini ta'minlaydi. Uchinchi yondoshuv hech narsa kafolat bermaydi. Server rad etsa, mijoz hech qanday yordam bermaydi. RPC yoki bajarilishi mumkin yoki ko'p marta. Qanday bo'lmasin, ushbu usulni amalga oshirish juda oson.

Ushbu yondashuvlarning hech biri juda jozibali. Va umumiy ishda bir xil bo'lgan ideal va ideal variant, umumiy ishda amalga oshirilmasligi mumkin. Masalan, printerni boshdan kechirish va printerni boshqarish reestriga bir bitni o'rnatishni o'z ichiga olgan ba'zi matnlarning bosilishi mumkin. Server halokati MicroCond uchun ham, mikrosekund uchun boshqaruv bitini o'rnatgandan so'ng ham mikrosekund uchun ham bo'lishi mumkin. Muvaffaqiyatsizlik butunlay tiklanish tartibini belgilaydi, ammo mijoz muvaffaqiyatsizlik lahzasi haqida bilmaydi. Qisqasi, server halokati qobiliyati RPC tabiatini tubdan o'zgartiradi va markazlashtirilgan va taqsimlangan tizim o'rtasidagi farqni aniq aks ettiradi. Birinchi holda, serverning qulashi mijozning qulashiga olib keladi va tiklanish mumkin emas. Ikkinchi holatda tizimni tiklash tizimi va zarur.

Mijoz so'rov yuborgandan keyin avariya tufayli yuz berdi. Bunday holda, hech kim kutmagan natijalarning hisob-kitoblari amalga oshiriladi. Bunday hisob-kitoblar "etimlar" deb nomlanadi. Etimlarning mavjudligi turli xil muammolarga olib kelishi mumkin: protsessor vaqti, blokirovka qilish, resurslar uchun resurslar uchun so'rovga bo'lgan so'rov bo'yicha resurslar orqali amalga oshirilgan so'rovga javob berish.

Etimlar bilan qanday bog'liq? 4 ta mumkin bo'lgan echimlarni ko'rib chiqing.

Halokat. Mijozning Stub RPC xabarini yubormasdan oldin u jurnalda markani belgilaydi, bu esa hozir nima qilishini bildiradi. Jurnal diskda yoki boshqa xotirada saqlanadi, barqaror muvaffaqiyatsizliklar. Baxtsiz hodisadan so'ng, tizimni qayta ishga tushiradi, jurnal tahlil qilinadi va etimlar yo'q qilinadi. Ushbu yondashuvning kamchiliklari, birinchi navbatda, har bir RPCning yozuvi bilan bog'liq bo'lgan xarajatlarni diskga, ikkinchidan, birinchi avlod etimlar tomonidan berilgan RPC qo'ng'iroqlari tomonidan ishlab chiqarilgan. Reenkarnasyon. Bunday holda, barcha muammolar diskka yozishni ishlatmasdan hal qilinadi. Usul ketma-ketlik davrlari uchun vaqt ajratishdir. Mijoz qayta yoqilganda, u translyatsiyani yangi davrning boshi bilan barcha mashinalarga uzatadi. Ushbu xabarni olganingizdan so'ng, barcha pullik hisob-kitoblar yo'q qilinadi. Albatta, agar tarmoq segment bo'lsa, unda ba'zi etimlar omon qolishlari mumkin. Yumshoq reenkarnasyon avvalgi ishqa o'xshaydi, bundan tashqari, barcha pullik hisob-kitoblar topilmasa, faqat qayta yoqilgan mijozni hisoblash. Muddati tugashi. Har bir so'rovning standart davri t, uni bajarilishi kerak bo'lgan standart davri beriladi. Agar so'rovni ajratilgan vaqt uchun bajarilmasa, qo'shimcha kvant ajratiladi. Garchi bu kerak bo'lsa ham qo'shimcha ishAmmo agar, mijozning avariyasidan keyin server mijozni qayta ishga tushirishdan oldin vaqt oralig'ini kutmoqda, shunda barcha etimlar majburiy ravishda yo'q qilinadi.

Amalda, ushbu yondashuvlarning hech biri istalmagan, bundan tashqari etimlarni vayron qilish vaziyatni yanada og'irlashtirishi mumkin. Masalan, etimning bir yoki bir nechta ma'lumotlar bazasi fayllarini blokirovka qilishiga yo'l qo'ying. Agar etim to'satdan vayron bo'lsa, unda bu qulflar qolsa, vayron bo'lgan etimlar turli xil navbatda va shunga o'xshash narsalarni keltirib chiqarishi mumkin.

Kompyuter tizimlaridan ko'plab foydalanuvchilar masofadan turib protseduralar yoki RPCga qo'ng'iroq qilib masofadan protseduralar kabi tushunchalar haqida eshitgan. Bu shunchaki hamma emas, bu texnologiya, ular qanday ishlashi va ularga kerak bo'lgan narsalarni tasavvur qilmaydi. Ammo bu xizmatni Windows-tizimlarda o'chirganlarning ko'pi ko'pincha tanqidiy muvaffaqiyatsizliklar bilan bog'liq xatolarni olishlari mumkin. Bu va boshqa ko'plab narsalar muhokama qilinadi.

Masofadan qo'ng'iroq qilish tartibi: bu nima?

Ba'zi nazariy ma'lumotlar bilan turishni boshlang. Masofaviy protseduralar sifatida ko'rib chiqilganidek (masofadan protsesslar) - bu siz ishlatiladigan telefon tizimlarining har qanday funktsiyalarini ishga tushirish yoki ishlatish imkonini beradigan mexanizmdir. Oddiy qilib aytganda, bu masofaviy kompyuterga, masalan, mahalliy tarmoq yoki Internetga ulanish usulidir.

Biroq, masofaviy protseduralar (raqamli protseduralar) RPC deb belgilanadi (inglizcha masofadan boshqarish pultidan qisqartirish) nafaqat chekka kompyuterlarga mumkin. Mahalliy darajada bunday texnologiyalar qo'llaniladi. Oddiy misol sifatida siz maxsus kutubxonalar orqali o'zaro aloqada bo'lgan boshqa dasturning ma'lum bir dasturini boshqa dasturiy topshirishingiz mumkin.

Bundan tashqari, mutlaqo umuman windows versiyalari Bunday xizmat mavjud va samaradorlikdan voz kechilganda, XP modifikatsiyasi umuman ishlamaydi.

O'lchash printsipi

Qoida tariqasida, mijoz-server rejimida ishlash uchun "RPC protsedurasi" xizmati kamida ikkita asosiy tarkibiy qismni talab qiladi: ma'lumotlarni almashish va seriya ma'lumotlarining tuzilishi uchun tarmoq protokoli ).

Arxitektura butunlay boshqacha va ularning imkoniyatlarida farq qilishi mumkin. Ammo transport darajasi deb ataladigan ma'lumotlar almashish uchun UDP va TCP protokollari ko'pincha qo'llaniladi, odatda - http.

Texnik jihatlarga kirmasligi uchun shunga o'xshash texnologiyalarning eng oddiy izohi quyidagi misol bo'lishi mumkin: Belgilangan protseduraning tavsifi ko'rsatilgan tartibda serverga so'rov yuboradi va uni yuboradi Shundan so'ng, server kerakli ko'rsatmalarni bajaradi va mijozga mijozga qo'ng'iroqni amalga oshiradi. Biroq, server ishlovchisi o'zi, kutish rejimida, kutish rejimida, faqat mijozlar so'rovlarining lahzalarida faollashadi. "So'rov-javob" sxemasi darhol amalga oshiriladi.

Shu bilan birga, nisbatan oz miqdordagi ma'lumotlarni almashish va komponentlarning kam sonli komponentlar almashinuvini almashtirishda maksimal ko'rsatkichlarga erishish mumkin.

Masofaviy protseduralar (Call-protseduralar): Xarakterli xususiyatlar va amalga oshirish

Shunday qilib, ushbu texnologiyalarning ikkita asosiy xususiyatini ajratish mumkin:

  • assimetriya (masofaviy protsessning boshlanishi faqat partiyalardan bittasi);
  • sinxroniklik (so'rov yuborilgandan keyin so'rovni boshlashdan beri qo'ng'iroqni to'xtatib turish).

Rejalashtirish, masofadan boshqarish protseduralari (chekka protseduralar) Bugungi kunda bir nechta asosiy texnologiyalardan foydalanadilar, ular orasida eng ko'p qo'llaniladigan quyidagilar:

  • Dce / RPC - TCP / IP, SMB / SIFC-ga asoslangan ikkilik protokol;
  • DCOM ob'ektlarga havolalarni uzatish uchun ob'ektga yo'naltirilgan qo'shimcha va qayta ishlash usullarini talab qiladi;
  • Jon-RPC - HTTP asosida matn protokoli;
  • .NET-ni masofadan turib UDP, TCP va HTTP-ga asoslangan ikkilik protokoldir;
  • Java RMI;
  • Sovun;
  • XML RPC;
  • Quyosh RPC;
  • Zeroc muz;
  • Rezertix.rpc va boshqalar.

Muammolar va vazifalar

Endi kamchiliklar haqida bir necha so'z. Eng muhim muammo va shunga ko'ra, amalga oshirish vazifasi masofadan qo'ng'iroq qilish xizmati orqali masofadan boshqarish pulini chaqirishning bir xil operatsiyasi bir vaqtning o'zida turli xil mashinalarda va ko'pincha turli xil ishchi tizimlarda, manzil maydonlari va arxitektura bilan bir vaqtda amalga oshirilishi kerak. Jarayonda ushbu parametrlar bitta terminaldan boshqasiga ko'chirilishi kerak. Bu nafaqat transport protokoli, balki turli xil ma'lumotlarni bayt ketma-ketligiga o'zgartirishga imkon beradigan sertifikatdan foydalanadi.

Ikkinchi nuqta masofaviy protseduralar (chekka protseduralar) mahalliy darajada, ikkalasi ham, ikkitasida (mijoz mashinasida va serverda) ishlatilishi bilan bog'liq. Shu sababli, dasturning favqulodda yakunlanishi terminallardan biri bilan bir xil reaktsiyaga olib kelishi mumkin.

Va nihoyat, asosiy vositalardan biri, bir nechta dasturlash tillarining turli xil veterinatsiyasi, belgilangan yagona standartlarga qaramay.

Asosiy turlari quyi tizimlar

Windows 10-protseduralar yoki quyida keltirilgan boshqa bir martalik tizimning masofaviy qiymati:

  • ma'lumotlar paketlarini kafolatlangan etkazib berish bilan chiqish va kiruvchi aloqalarni boshqarish uchun mo'ljallangan transport quyma tizimi;
  • hovuz protokollari - natijada olingan terminal bo'yicha protsedurani bajarish tushunchasi;
  • seriyalash (martlash) - arxitekturadan mustaqil bo'lgan standart baytni kodekslarga aylantirish;
  • shifrlash orqali yuborilgan va olingan paketlar ularga elektron raqamli imzoni joriy etish bilan;
  • autentifikatsiya va avtorizatsiya tizimi.

Qaysi turdagi dasturlar RPCning bajarilishini talab qiladi?

Agar biz nima haqida gapiradigan bo'lsak dastur modulilari Operatsion tizimlar RPC xizmatini o'z ichiga olgan holda, ularning barchasi imkonsiz.

Ammo taniqli Windows-Tizim tarkibiy qismlari orasida siz faks xizmatlari, kriptografiya xizmatlari, yordam berish va qo'llab-quvvatlash, Xatsab xizmati va qo'llab-quvvatlash, Ruxsat yuborish va mantiqiy qismlarga, o'chirilgan disklarni boshqarish, Audio tizimi, windows o'rnatuvchisi Xudo yangiliklari bu.

Aftidan, ushbu ro'yxat ushbu xizmatga bog'liq bo'lgan tizimning qancha tarkibiy qismlari va foydalanuvchi o'zi buni tushunish uchun kifoya qiladi.

RPC qanday ta'sir qiladi

Umuman olganda, oldingi tavsifga asoslanib, RPC ta'sirini aniqlash mumkin. Masalan, ushbu xizmat o'chirilganda tovush yo'qolganida, ovozni butunlay g'oyib bo'lganida, tizimni tiklab, tizimni tiklashga imkon berilmaydi, chunki foydalanuvchi tomonidan tanqidiy nosomlik sozlamalari.

Ammo, juda ko'p narsa shundaki, agar siz RPC protseduralari uchun murojaat qilsangiz, ba'zida asosiy tizim sozlamalariga kirishingiz mumkin emas, balki administrator tomonidan o'z terminalida kamida uch marta foydalanuvchisiz.

Ushbu xizmatni o'chirib qo'yish mumkinmi?

Asl va katta, ko'pchilik "uzoq protsedura qo'ng'irog'i" xizmatini o'chirib qo'yish uchun ko'p harakat qilishdi (va sinab ko'ring). Buni qat'iy mantiqiy emas. Umuman olganda, tizimning o'zi, bunday urinishni amalga oshirishda tegishli bildirishnomani bermaydi va tegishli bildirishnomani taqdim etadi.

Ammo hamma ham xizmat bo'limida (xizmatlari.msc) hali ham "RPC protseduralarining masofaviy qo'ng'iroqning masofaviy qo'ng'irog'ini" sifatida hali hammasi ham bilmaydi. Bu erda bu shunchaki tizim uchun og'riqsiz og'riqsiz bo'lishi mumkin. Uni o'z ishida ishlatishi mumkin bo'lgan arizalar, agar kerak bo'lsa, xizmatni mustaqil deb atashadi.

Noto'g'ri va xatolarni bartaraf etish

Va nihoyat, protsedura chaqirilganda xato berilsa, nima qilish kerakligini ko'rib chiqaylik. Eng oddiy ishda siz xizmatni yana yoqishga harakat qilishingiz mumkin (agar, albatta, paydo bo'ladi).

Buning uchun kerakli xizmat joylashgan tegishli bo'limda parametr tahrirlash menyusida, POWER turi avtomatik ravishda o'rnatiladi. Agar siz bunday protsedurani odatiy yuklash tizimi bilan bajarsangiz, buning iloji yo'q, siz shunga o'xshash harakatlarni amalga oshirishga harakat qilishingiz mumkin xavfsiz rejim. Ba'zi mutaxassislarga antivirus dasturini o'chirish uchun bir vaqtning o'zida tavsiya etiladi.

Agar bu yordam bermasa, lekin qo'lda tizimning o'rnatilishi yoki tiklanish diski mavjud bo'lsa, siz administrator huquqlari bilan buyruq konsolini ishga tushirishingiz mumkin (diskdan yuklab olishingiz shart emas) va bu buyruqlar unda ro'yxatdan o'tishi kerak:

  • cD Z: \\ i386 (z - adabiyot optikasi);
  • explorer.ex_% temp% \\ Exporer.exe;
  • svchost.ex_% temp% \\ svchost.exe.

Shundan so'ng, "vazifa menejeri" ni (CTRL + Del + Altregni "yugurish" menyusida ishga tushiring va Explorer.exe jarayonini yakunlang.

"Chiqishchi" da Svhost.exe-ning barcha jarayonlarini to'xtating, shundan so'ng satrda% \\ System32 / y "ning narxiga 60 soniya vaqtini berish kerak.

Va nihoyat, muharrirga kirish imkoniyati bo'lsa tizim ro'yxati (Rejedit) Qayta tiklandi, siz tizim va joriy indekslar orqali HKCC filialidan o'tishingiz va uning qiymatini nolga o'zgartirib, CSCONFIGLAGS parametriga o'tishingiz kerak.

Bu RPC bilan bog'liq xatolarni tuzatishning barcha usullari emas. Gap shundaki, agar ushbu xizmat boshqa xizmatlarning buzilishiga sabab bo'lsa, avval ularning ishlashi bilan bog'liq muammolarni bartaraf etishi mumkin, ammo shundan keyingina RPCga qarshi choralar ko'rishi mumkin. Va har doim ham yuqorida ko'rsatilgan parametrlar va sozlamalarni olish mumkin emas to'liq kirish. Agar haqiqatan ham ro'y bermasa, u o'zgarmas bo'lsa, u operatsion tizimni to'liq qayta o'rnatishi, garchi u bunga erishmasligiga umid qilaman.

Xulosa

Bu erda Texnologiya va RPC xizmatiga tegishli qisqa va narsalar. Aslida, bularning barchasi ushbu spetsifikatsiyada taqdim etilganidan ancha qiyin ko'rinadi va hech bo'lmaganda siz hech bo'lmaganda ilmingiz kerakligini to'liq tushunish uchun. Ammo RPC haqida umumiy tasavvurga ega bo'lish uchun juda ko'p.

Siqilishdan tashqari, bunday narsalar bilan shug'ullanishga harakat qilmang, aks holda butun tizim rad etadi. Kamaytirilgan tuzatish eritmasi odatda yordam beradi, ammo to'liq kafolat baribir berilmaydi, chunki xizmatni o'chirish boshqa tarkibiy qismlarda muvaffaqiyatsizlikka olib kelishi mumkin.



Tarmoq orqali muloqot mexanizmi kerak. Pastki darajadagi paket qabul qilinadi, tarmoq signalini qayta ishlash dasturi tomonidan qayta ishlangan signal beriladi. Yuqori darajada, Rendezvu mexanizmida (Rendezvu) do'zaxda faoliyat ko'rsatmoqda. Nfs masofadan boshqarish pultini (RPC) ishlatadi, unda mijoz server bilan ishora qiladi (1-rasmga qarang). Ushbu jarayonga muvofiq mijoz birinchi navbatda serverga so'rov yuboradigan protsedurani anglatadi. Paketni so'rov bilan to'ldirganingizda, server o'z ochilish tartibini ochadi, so'ralgan xizmatni amalga oshiradi, javobni yuboradi va nazorat mijozga qaytariladi.

RPC interfeysi uchta darajani tashkil etish mumkin:

  1. Yuqori daraja butunlay "shaffof". Masalan, ushbu darajadagi dastur, masalan, masofadan turib foydalanuvchilarning sonini qaytaradigan rnusers () protsedurasiga murojaat qilishlari mumkin. Siz dasturda shikoyat qilsangiz, siz RPC mexanizmidan foydalanish haqida bilishingiz shart emas.
  2. O'rtacha darajasi Eng keng tarqalgan dasturlar uchun mo'ljallangan. RPC qo'ng'iroqlari RUGGRPC () va CalRRPC (). RadurRPC () Oddiyona qorong'i kodni oladi va CaltRCC () masofadan boshqarish pultiga qo'ng'iroqni amalga oshiradi. RNUSERS () Qo'ng'iroqlar ushbu ikkita kichik subroutinalar yordamida amalga oshiriladi.
  3. Pastki darajasi protseduralar parametrlari parametrlariga o'zgartiradigan yanada murakkab vazifalar uchun ishlatiladi. Ushbu darajada RPC xabarlarini uzatishda ishlatiladigan jakkalarni aniq boshqarishingiz mumkin.

Qoida tariqasida, siz yuqori darajadan foydalanishingiz va kamroq darajalardan foydalanishdan saqlanishingiz kerak.

Ushbu qo'llanmada biz faqat C uchun interfeysni ko'rib chiqamiz, masofaviy protseduraga murojaat qilish har qanday tildan amalga oshirilishi mumkin. RPC mexanizmining ishlashi turli mashinalardagi jarayonlar o'rtasidagi o'zaro munosabatlarni tashkil etishning operatsiyalari uning ishidan bir-biridan farq qilmaydi.

RPC (masofaviy protsess chaqiruvchisi, Call-protsess xizmati) - bu chekka foydalanuvchilar va ushbu foydalanuvchilarning so'rovlarida ishga tushirilgan ba'zi bir xost dasturlari o'rtasidagi interfeys. Har qanday xostning RPC xizmati, qoida tariqasida, mijozlarga bir qator dasturlarni taqdim etadi. Ushbu dasturlarning har biri o'z navbatida, bir yoki bir nechta masofaviy protseduralardan. Masalan, xizmat masofasini fayl tizimi RPC qo'ng'iroqlarida qurilgan NFS faqat ikkita dasturdan iborat bo'lishi mumkin: masalan, bitta dastur yuqori darajadagi foydalanuvchi interfeyslari va past darajadagi i / O funktsiyalari bilan o'zaro ta'sir qiladi.

Masofaviy protsessning har bir qo'ng'iroqida ikki tomon ishtirok etmoqda: Serverga protseduraga va mijozga javob yuboradigan serverni yuboradigan faol mijoz.

Eslatma. Shuni yodda tutish kerakki, "Mijoz" va "Server" atamalarida aniq birja yoki dasturiy ta'minot (jarayon yoki dastur) mijozlar rolini va serverning roli sifatida ishlashi mumkin. Masalan, olis protsessor xizmatining ishlashini ta'minlaydigan dastur, shu bilan birga tarmoq fayl tizimi bilan ishlash mijoz bo'lishi mumkin.

RPC protokoli mahalliy protseduralarni chaqirish mexanizmiga o'xshash masofaviy qo'ng'iroq modellarida qurilgan. Mahalliy protsedurani chaqirganda, siz tortishuv joyini, stack yoki atrof-muhit o'zgaruvchilariga yoki tegishli manzilni boshqarishni o'z ichiga olasiz. Ishni tugatgandan so'ng, siz natijalarni ma'lum bir manzilda o'qiysiz va jarayoningizni davom ettirasiz.

Masofaviy protsessor bilan ishlashda asosiy farq shundaki, masofadan boshqarish funktsiyasining qo'ng'irog'i ikkita jarayonga xizmat qiladi: mijoz jarayoni va server jarayoni.

Mijozlar jarayoni serverga yuboradi, unga kiritilgan protseduraning parametrlari yoqilgan va javob xabari uning ishlashi natijalarini kutmoqda. Javobni olganda, natija o'qiladi va jarayon ish olib bormoqda. Server tarafida, qo'ng'iroqni boshqarish jarayoni kutish holatida va protsedura qabul qilinganda, protsedura parametrlari javobni yuboradi, amalga oshiradi, keyingi qo'ng'iroqni kutishadi.

RPC Protokol jarayonlar o'rtasidagi qo'shimcha munosabatlarga hech qanday talablarni qabul qilmaydi va bajarilgan funktsiyalarni sinxronlashtirishni talab qilmaydi, I.E. Qo'ng'iroqlar asenkron va tasavvur qilish mumkin, shuning uchun mijoz javob davomida boshqa protseduralar bajarishi mumkin. RPC serveri har bir funktsiya uchun alohida jarayon yoki har bir funktsiya uchun virtual mashinani ajratishi mumkin, shuning uchun oldingi so'rovlarning tugashini kutmasdan darhol quyidagilarni qabul qilishi mumkin.

Biroq, mahalliy va masofaviy protseduralar qo'ng'iroqlari orasida bir nechta muhim farqlar mavjud:

  1. Xatolarni qayta ishlash. Mijoz har qanday holatda boshqa holatlarda, serverda yoki tarmoqda masofadan protseduralar bilan chaqirishda xatolar to'g'risida xabar berish kerak.
  2. Global o'zgaruvchilar. Server mijozning manzil maydoniga kirish huquqiga ega emasligi sababli, siz uzoq protseduralar paytida global o'zgaruvchilar shaklida yashirin parametrlardan foydalana olmaysiz.
  3. Ishlash. Masofaviy protseduralar qatl etish tezligi odatda shunga o'xshash mahalliy protseduralarni bajarish tezligining bir yoki ikkitasi hisoblanadi.
  4. Autentifikatsiya. Uzoq protseduralar qo'ng'iroqlari tarmoq orqali amalga oshirilganligi sababli, mijoz autentifikatsiya šilish mexanizmlaridan foydalanish kerak.

Protokolni qurish tamoyillari.

RPC protokoli bir nechta turli xil transport protokollaridan foydalanishlari mumkin. RPC Protokolining majburiyatlari faqat xabarlarni standartlar va tahlil qilish va sharhlashni amalga oshiradi. Xabarlarning aniqligi va ishonchliligi butunlay transport sathi bilan ta'minlanadi.

Biroq, RPC Tanlov va ba'zi transport protokolining ba'zi xususiyatlarini boshqarishi mumkin. RPC va transport protokoli o'rtasidagi o'zaro munosabatlarning namunasi sifatida biz RPC - Portmapper orqali RPCning RPC-ning RPC-ning RPC portini tayinlash tartibini ko'rib chiqamiz.

Ushbu funktsiya dinamik jihatdan (so'rovda) RPC aloqasiga ma'lum bir portni tayinlaydi. Portmapper funktsiyasi juda ko'p ishlatiladi, chunki RPC transport portlari uchun ajratilgan to'plam cheklangan va bir vaqtning o'zida juda yuqori bo'lgan jarayonlarning soni juda yuqori. Masalan, portmapper mijozning o'zaro ta'sir portlari va NFS server serverini tanlashda, deyiladi.

Portmapper xizmati RPC xabarlarini ma'lum bir portga yo'naltiradi - III. Mijoz joriy RPC port so'rovi xabarini yuboradi. Portmapper xizmati Dachshund xabari manzilni belgilaydi mahalliy xizmat RPC va mijozga javob yuboradi. RPC portmapper xizmati TCP va UDP protokollari bilan ishlashi mumkin.

RPC turli transport protokollari bilan ishlashi mumkin, ammo hech qachon ularning vazifalarini takrorlashi mumkin, ammo agar RPC TCP-da ishlaydi, barcha RPCning barcha turlari va ishonchlilik va ishonchlilikka ulanish. Biroq, agar RPC protokoli UDPning yuqori qismida o'rnatilgan bo'lsa, u kafolatlangan xabarlarni etkazib berish uchun qo'shimcha egenfunktsiyalarni taqdim etishi mumkin.

Eslatma.

Ariza topshiriqlari RPC protokolini JSR tarmog'ida deb atash uchun aniq tartib deb hisoblashi mumkin (quyi subroutin ko'rsatmalarini).

RPC protokolini ishlash uchun quyidagi shartlarni bajarish kerak:

  1. Ushbu xost bo'yicha masofadan turib o'tkazilgan tartib-qoidalarning noyob identifikatori. RPC so'rovlarida uchta identifikator maydonlari mavjud - Masofadan dastur raqami (Xizmat), masofadan turib, masofadan turib, masofadan boshqarish pulti raqami va masofadan boshqarish pulti ko'rsatilgan dastur raqami. Dastur raqami xizmatni ishlab chiqaruvchi tomonidan tayinlanadi, protsedura raqami ushbu xizmatning o'ziga xos funktsiyasini bildiradi.
  2. RPC protokoli versiyasini aniqlash. RPC xabarlarida RPC protokoli versiyasini o'z ichiga oladi. Mijoz bilan ishlayotganda uzatilgan parametrlar formatlariga mos keladi turli xil versiyalar RPC.
  3. Mijoz autentifikatsiya šilish mexanizmlarini serverda taqdim etish. RPC protokoli mijozni autentifikatsiya qilish tartibini xizmatda, agar kerak bo'lsa, har bir so'rov bilan mijozga javob yuboradi. Bundan tashqari, RPC sizga qo'shimcha xavfsizlik mexanizmlaridan foydalanish imkonini beradi.

RPC autentifikatsiya šilish mexanizmlaridan to'rtta turdan foydalanishi mumkin:

  • Auth_null - autentifikatsiyasiz
  • Aut_unix - Unix autentifikatsiyasi
  • Aud_short - Unix standartiga muvofiq o'z kodeksi tuzilishi bilan
  • Auth_des - des standart autentifikatsiya
  1. Tegishli so'rovlarga javob xabarlarini aniqlash. RPCning javobi xabarlarida ular qurilgan, ular qurilgan. Ushbu identifikatorni RPC qo'ng'iroq tranziferi deb atash mumkin. Ushbu mexanizm ayniqsa, asenkron rejimda ishlashda va bir nechta RPC qo'ng'iroqlarining ketma-ketligini bajarishda kerak.
  2. Protokol xatosini aniqlash. Barcha tarmoq yoki server xatolari har bir aralash qatnashchilarning har biri ishlamayotgan sababini aniqlashi mumkin bo'lgan noyob identifikatorlarga ega.

Xabarlar protokoli xabarlari

RPC xabarlarini transport protokoli bo'yicha uzatishda bir nechta RPC xabarlari bitta transport paketida joylashgan. Bitta xabarni ikkinchisidan ajratish uchun Yozish belgisi ishlatiladi (RM - Yozuv belgisi). Har bir RPC xabari aniq bir rm "belgilangan".

RPC xabari bir nechta bo'laklardan iborat bo'lishi mumkin. Har bir parcha ma'lumotlar to'rtta baytdan iborat va (0 dan 2 gacha) ma'lumotlar. Sarlavhaning birinchi bitlari ushbu parcha oxirgi ekanligini anglatadi va qolgan 31 bit ma'lumot paketining uzunligini ko'rsatadi.

RPC tuzilmasi rasmiy ravishda tavsif tilini va ma'lumot formatlarining tavsifida - XDR protseduralar tavsifi bo'yicha HDR bilan tavsiflanadi. Hatto RPC tavsif tili protseduralar bilan to'ldirilgan ish bilan to'ldirilgan XDRning kengayishi.

RPC paketining tuzilishi quyidagicha:


Javob tuzilishi (Javob_OT_OGE) Xavfsiz bo'lgan tuzilishni o'z ichiga olishi mumkin (keyin unda xato kodi) yoki so'rovni muvaffaqiyatli qayta ishlashning tuzilishi (keyin u qayta ishlangan ma'lumotlar mavjud).

Yuqori darajadagi dasturiy interfeys.

Dasturdagi subuterinalardan foydalanish vazifani tuzishning an'anaviy usuli, uni aniqroq qilish. Kutubxonada turli xil dasturlar tomonidan ishlatilishi mumkin bo'lgan eng tez-tez ishlatiladigan subroutinlar to'planadi. Bunday holda, biz mahalliy (mahalliy) qo'ng'iroq, bu chaqiruv, qo'ng'iroqlar va ular bitta kompyuterda ishlaydigan dasturda ishlayotgani haqida gapiramiz.

Masofaviy qo'ng'iroq holatida, bitta kompyuterda ishlaydigan jarayoni uzoq kompyuterda (I.E. aslida uzoq kompyuterda protsedura kodini ishga tushirishni boshlaydi). Ko'rinib turibdiki, protsedura uchun uzoqdan qo'ng'iroq an'anaviy ravishda an'anaviy qo'ng'iroqlar an'anaviy tarzda farq qiladi, ammo bunday farqlar deyarli yo'q.

Biroq, agar mahalliy qo'ng'iroq bo'lsa, dastur parametrlarni chaqirilgan tartibda parametrlarni uzatadi va keyinchalik uzoq qo'ng'iroq paytida parametrlarning translyatsiyasi a ga aylanadi Tarmoq orqali so'rovni talab qilish va operatsiya natijasi kiruvchi javobda.

Ushbu yondashuv taqsimlangan dasturlarni yaratish uchun mumkin bo'lgan asosdir, ammo ko'plab zamonaviy tizimlar ushbu mexanizmdan, ko'p hollarda asosiy tushunchalar va atamalarni saqlab qolmaydi. RPC mexanizmini tavsiflashda biz an'anaviy ravishda qo'ng'iroq jarayonini - mijoz va protsessni amalga oshiradigan masofadan jarayon server ekanligini chaqiramiz.

Masofaviy protsessor qo'ng'iroq quyidagi bosqichlarni o'z ichiga oladi:

  1. Mijoz dasturi plug (stub) deb ataladigan protseduraning mahalliy vazifasini ta'minlaydi. Bunday holda, mijoz "tuyuladi", bu stubni keltirib chiqaradi, aslida server protsedurasi deb nomlanadi. Va haqiqatan ham mijoz kerakli parametrlarni plitkaga o'tkazadi va natijani qaytaradi. Biroq, vaziyat mijozni tasavvur qilish mutlaqo yo'llari emas. Plug muammosi uzoq protsedura uchun mo'ljallangan dalillarni olishdir, ularni standart formatga o'tkazish va tarmoq so'rovini shakllantirish mumkin. Dalillarni qadoqlash va tarmoq so'rovini yaratish (Marshalling) deb nomlanadi.
  2. Tarmoq so'rovi tarmoq orqali masofaviy tizimga yuboriladi. Buning uchun vilkali oldingi qismlarda ko'rib chiqilgan holda tegishli qo'ng'iroqlarni amalga oshiradi. Shuni yodda tutingki, bir vaqtning o'zida turli xil transport protokollaridan foydalanish mumkin, balki TCP / IP oilalari.
  3. Masofaviy xostda hamma narsa teskari tartibda sodir bo'ladi. Server vilkasi so'rovni kutmoqda va qabul qilishda parametrlarni qabul qiladi, protsedura dalillarni chaqirish. Ekstraksiya (nuqtai nazar) zarur suhbatlar (masalan, baytlar joylashgan joyning tartibidagi o'zgarishlar) bo'lishi mumkin.
  4. Vilkasi ushbu server protsedurasining chaqirig'ini bajaradi, u mijozning iltimosiga binoan, tarmoq orqali olingan dalillarni etkazadi.
  5. Jarayonni tugatgandan so'ng, uni kerakli parametrlarni uzatish orqali server vilkasiga qaytadi. Mijoz vilkasi kabi; Server vilkasi qiymatni qiymat protsedurasiga o'zgartiradi, bu esa tarmoq tizimi orqali uzatilgan tarmoq tizimi orqali uzatilgan.
  6. Operatsion tizim qabul qilingan xabarni mijozning vilkasini uzatadi.

Shunday qilib, mijozning nuqtai nazaridan, bu mahalliy protseduraga qo'ng'iroq qiladi, chunki u mahalliy uchun buni amalga oshiradi. Server haqida ham shunday deyish mumkin: protsedura qo'ng'iroq bo'lib, ma'lum bir ob'ekt (server plug) mahalliy protseduraga qo'ng'iroq qiladi va unga qaytariladi. Mijoz bu retketni "deb nomlangan server" deb qabul qiladi va server o'z mijozini qoplaydi.

Shunday qilib, vilkalar RPC tizimining asosidir, mijoz va serverlar mahalliy ravishda sodir bo'lishiga ishonishlariga ishonishadi. Bu RPCning asosiy tushunchasi - vilka kodining taqsimlanganligini to'liq yashirish uchun. Ushbu yondashuvning afzalliklari aniq: mijoz va server tarmoqlarni amalga oshirishga intilib, ikkalasi ham ma'lum bir taqsimlanganda ishlaydi virtual mashinadava protseduralar standartlari standart interfeysga ega.

Transfer parametrlari

Parametrlarni o'tkazish alohida qiyinchiliklarga olib kelmaydi. Bunday holda, mijoz plitalarini tarmoq savolidagi parametr qiymatini standart shaklga o'tkazish mumkin (masalan, bayt tartibini o'zgartirish). Parametri ularning qiymatini emas, balki ma'lumotlar manzilini ifodalaganda, ko'rsatkichlarning uzatilishi bilan ancha murakkab. Manzil so'roviga o'tish ma'nodan mahrum, chunki masofadan boshqarish protsedura mutlaqo boshqa manzil maydonida amalga oshiriladi. Ko'p. oddiy qarorRPC-ga tegishli mijozlar mijozlarga parametrlarni o'zgartiradi, aksincha, qiymati, garchi bu jiddiy cheklovlarni kiritadi.

Bog'lash (majburiy)

Mijoz uzoq protsedurani keltirib chiqarishi mumkin, uni kerakli serverga ega bo'lgan masofadan turib tizim bilan bog'lash kerak. Shunday qilib, bog'lash vazifasi ikkiga bo'linadi:

  1. Kerakli server bilan masofaviy xostni topish
  2. Ushbu xostdagi kerakli server jarayonini topish

Xostni topish uchun turli xil yondashuvlardan foydalanish mumkin. Mumkin bo'lgan variant - bu o'z serverlarini e'lon qiladigan va mijozning mezbonligini va unga mos keladigan protseduraning manzilini tanlashi mumkin bo'lgan ma'lum markazlashtirilgan ma'lumotnomani yaratish.

Har bir RPC protsedurasi dastur raqami va protsedurasi tomonidan noyob belgilanadi. Dastur raqami uzoq protseduralar guruhini belgilaydi, ularning har biri o'z raqamiga ega. Har bir dastur shuningdek, versiya raqamiga yo'naltirilgan, shuning uchun kichik o'zgarishlar (masalan, protsedurani qo'shganda) raqamini o'zgartirishning hojati yo'q. Odatda, bir nechta funktsional o'xshash protseduralar bitta dastur modulida amalga oshiriladi, ular boshlanganda ushbu protseduralar serveriga aylanadi va bu dastur raqami bilan aniqlanadi.

Shunday qilib, mijoz masofadan protsessni chaqirmoqchi bo'lganida, kerakli xizmatni taqdim etadigan dastur raqamlari, versiya va protseduralarini bilish kerak.

Mijozga so'rov yuborish, shuningdek, xostning tarmoq manzilini va kerakli protseduralarni taqdim etadigan server dasturi bilan bog'liq port raqamini bilish kerak. Buning uchun PortMap (IM) damondan foydalaning (ba'zi tizimlarda u RPCBind (IM) deb nomlanadi). Jin chekka protseduralar xizmatini taqdim etadigan va taniqli port raqamini ishlatadigan xostdan boshlanadi. Jarayon serverini ishga tushirishda u o'zining protseduralari va port raqamlari bo'yicha 3-sonli ro'yxatga olinadi. Endi mijoz aniq protsedurani chaqirish uchun port raqamini bilish kerak, bu portmap serveriga (IM) so'rovini yuboradi, bu port raqamini yoki so'rovni to'g'ridan-to'g'ri uzoq protsess serveriga qaytaradi va Bajarilgandan so'ng, mijozga javob qaytaradi. Qanday bo'lmasin, agar kerakli protsedura mavjud bo'lsa, mijoz portmap serveridan portmap raqamini oladi va qo'shimcha so'rovlar ushbu portga to'g'ridan-to'g'ri amalga oshirilishi mumkin.

Maxsus vaziyatlar qayta ishlash (istisno)

Mahalliy protseduralarni chaqirganda maxsus vaziyatlarni qayta ishlash alohida muammoni anglatmaydi. Unix nolga teng bo'lgan jarayonlarni qayta ishlov berishda noto'g'ri ishlov berish va boshqalarga murojaat qilish va boshqalarga murojaat qiladi. Masofaviy protsessorlarning paydo bo'lishi ehtimoli oshadi. Masalan, birlashgan xatolar serverda xato va vilkalarga xato tarmog'iga qo'shiladi.

Masalan, UDP-dan foydalanganda xabarlar ma'lum bir vaqtdan keyin transport protokoli sifatida transporti sifatida o'tkaziladi. Mijoz xatolikni qaytaradi, agar ma'lum bir urinishlardan so'ng serverdan javob kelmadi. Agar Server TCP ulanishini kesib tashlasa, mijoz xatolikni qaytaradi.

Semantika muammosi

Mahalliy protseduraga qo'ng'iroqni bir xil tarzda chaqirish, agar nazorat ota-ona dasturiga qaytariladi. Aks holda, vaziyat uzoq protsedura deb atashda holat. Ushbu protsedura amalga oshirilishini aniqlab bo'lmaydi, agar u umuman bajariladimi, va agar bo'lsa, necha marta qancha? Masalan, agar so'rov server dasturining favqulodda tugaganidan so'ng, agar Server dasturini favqulodda tugagandan so'ng, protsedura umuman bajarilmaydi. Agar mijoz ma'lum bir vaqt oralig'ini qayta yuborganda, mijoz ma'lum vaqtdan keyin amalga oshirilsa, javob allaqachon tarmoq orqali uzatilgan bo'lsa, vaziyatni yaratilishi mumkin va so'rov yana qayta ishlash uchun yana qabul qilinadi. Bunday holda, protsedura bir necha marta bajariladi.

Shunday qilib, masofadan protsessni amalga oshirish quyidagi semantika bilan tavsiflanishi mumkin:

  • Bir va faqat bir marta. Ushbu xatti-harakatlar (ba'zi hollarda eng istalgan hollarda) server signalini talab qilish qiyin.
  • Maksimal vaqt. Bu protsedura umuman bajarilmasligini yoki faqat bir marta bajarilganligini anglatadi. Bunday bayonot normal javob o'rniga xato kelib tushganda amalga oshirilishi mumkin.
  • Kamida bir marta. Ishonch berish tartibi bir marta amalga oshirildi, ammo ehtimol ko'proq. Bunday vaziyatda normal ishlash uchun masofadan boshqarish pult pulempotal mulkiga ega bo'lishi kerak (ingliz identifikatoridan). Ushbu protsedura bir necha qatlamga ega, ularning to'plangan o'zgarishlarga olib kelmaydi. Masalan, faylni o'qish, idishni o'qish va faylga matn qo'shish - Yo'q.

Ma'lumot taqdimoti

Mijoz va server bitta kompyuterda bitta tizimda amalga oshirilganda, ma'lumotlar nomuvofiqligi yuzaga kelmaydi. Va mijoz va server uchun ikkilik shakldagi ma'lumotlar teng darajada ko'rinadi. Masofaviy qo'ng'iroq holatida, ish mijoz va server turli xil arxitektura bilan o'qilishi mumkinligi bilan murakkablashadi, bu ma'lumotlar uchun turli xil ma'lumotlarni (masalan, suzuvchi nuqtaning tartibini ifodalash orqali) bayt va boshqalar)

RPC tizimining eng ko'p amalga oshirishlari ba'zi standart turdagi ma'lumotlarni taqdim etishni aniqlaydi va ularga so'rovlar va javoblar o'zgartirilishi kerak.

Masalan, RPC ma'lumotlarini taqdim etish formati Quyosh mikrosizimlari quyidagicha:

  1. Baytning tartibi - eng katta - oxirgisi
  2. Suzuvchi nuqta qadriyatlarining taqdimoti - ieee
  3. Belgilar taqdimoti - ASCII

Sof

Uning funktsionalligi bilan RPC tizimi dastur darajasi va transport darajasi o'rtasidagi oraliq joyni egallaydi. OTO modeliga muvofiq, ushbu qoida taqdimot va sessiyalarga mos keladi. Shunday qilib, RPC tarmoqni amalga oshirishda, xususan, transport darajasining tarmoq protokolidan nazariy jihatdan mustaqil.

Tizimning dasturiy ta'minoti, qoida tariqasida, bir yoki ikkita protokollarni qo'llab-quvvatlash. Masalan, Quyosh mikrossiz dasturlarini ishlab chiqish RPC TCP va UDP protokollaridan foydalanib xabarlarni qo'llab-quvvatlaydi. Ushbu yoki ushbu protokolni tanlash dasturning talablariga bog'liq. UDP protokolini tanlash quyidagi xususiyatlarga ega bo'lgan ilovalar uchun asoslanadi:

  • Tasdiqlash protsedurasi
  • Transport vositalarining o'lchami va qaytarilgan natijalar UDP to'plamining hajmi - 8 KB.
  • Server bir necha yuzlab mijozlar bilan ishlashni ta'minlaydi. TCP protokollari bilan ishlashda server har bir faol mijozlar bilan aloqani qo'llab-quvvatlashga majbur bo'ladi, bu uning resurslarining muhim qismidir. Bu borada UDP protokoli kam resurslar intensivsi

Boshqa tomondan, TCP ni ta'minlaydi samarali ish Quyidagi xususiyatlarga murojaat qilish:

  • Ilova ishonchli uzatish protokolini talab qiladi
  • Ta'sirchan bo'lmagan tartib
  • Dalillarning hajmi yoki qaytarilgan natijasi 8 Kb dan oshadi

Protokolni tanlash odatda mijoz ortida qoladi va tizimlar xabarlarni shakllantirish va uzatish va uzatishni tashkillashtiradi. Shunday qilib, uzatiladigan ma'lumotlar uzatiladigan ma'lumotlar oqimi bo'lgan TCP protokolidan foydalanganda, siz xabarlarni bir-biringizdan ajratishingiz kerak. Masalan, RFC1057 "RPC: Masofadan boshqarish pulti" Protokol spetsifikatsiyasini 2-versiyada tasvirlangan bayonnomani qayd etish to'g'risidagi yozuvlar rekord o'rnatdi, unda xabar hajmining boshida 32 bitli butun son mavjud baytlar.

Bu boshqa va qo'ng'iroq semantikasi bilan. Masalan, agar RPC ishonchsiz transport protokoli (UDP) yordamida amalga oshirilsa, qisqa vaqt ichida xabarni qayta uzatishni amalga oshiradi. Agar mijozlarga murojaat qilish javob olmasa, unda protsedura nol yoki undan ko'p marta belgilanganligiga ishonch bilan aytish mumkin. Agar javob olinsa, ariza protsedura kamida bir marta amalga oshirilgan deb xulosa qilishi mumkin. Ishonchli transport protokoli (TCP) dan foydalanganda, agar siz javob olsangiz, biz protsedura bir marta bajarilgan deb aytishimiz mumkin. Agar javob olinmasa, tartibda bajarilmasa, bu mumkin emas, bu mumkin emas.

U qanday ishlaydi?

Aslida, RPC tizimi o'rnatilgan mijoz dasturi va server dasturidir. Tarqatilgan dasturlarni ishlab chiqishda RPC Protokol yoki xabarlarni qayta ishlash dasturini dasturlashtirishni mamnun qilish quvvati. Tizim amaliyot hayotiga katta yordam beradigan tegishli rivojlanish muhitining mavjudligini o'z ichiga oladi dasturiy ta'minot. RPCning asosiy fikrlaridan biri shundaki, tarqatilgan dasturning rivojlanishi ob'ekt interfeysi - maxsus tilda qilingan server funktsiyalarining rasmiy tavsifi. Ushbu interfeysga asoslangan mijoz va server vilkalari avtomatik ravishda yaratiladi. Buningdan keyingina qilishingiz kerak bo'lgan yagona narsa - bu protseduraning haqiqiy kodini yozish.

Bunga misol sifatida Quyosh mikrosystems kompaniyasining RPC-ni ko'rib chiqing. Tizim uchta asosiy qismdan iborat:

  • rPCGen (1) - RPC kompilyatori Masofadan boshqarish pultidagi interfeys mijoz va S.-ning dasturlari shaklida server vilkasini yaratadi.
  • XDR kutubxonasi (tashqi ma'lumotlar taqdimoti), unda konversiya qilish funktsiyalari mavjud turli xil turlar Meterogen tizimlar o'rtasidagi ma'lumot almashish imkonini beradigan mashinadan mustaqil ko'rinishga ma'lumot.
  • Tizimning umuman ishlashini ta'minlaydigan modullar kutubxonasi.

Kirish uchun eng oddiy taqsimlangan dasturning misolini ko'rib chiqing. Startupda mijoz uzoq kompyuter jurnal fayliga xabarni yozish uchun masofadan boshqarish pultini keltirib chiqaradi.

Buning uchun siz kamida uchta faylni yaratishingiz kerak: log.x masofaviy protseduralar (interfeys tavsifi tilida), aslida Mijozning bosh dasturi () - Mijoz.c (c) til.

Log.x spetsifikatsiyasiga asoslangan RPCGen kompilyatori uchta faylni keltirib chiqaradi: log clnt.c va log kvc.c va log stsenariy matnlari va log.

Shunday qilib, dasturlarning manbalarini ko'rib chiqing.

Ushbu fayl uzoq protsessning ro'yxatga olish parametrlarini - dastur raqamlari, versiyalar va protseduralar va qo'ng'iroqlar interfeysi aniqlanadi - kirish bahslari va qaytarish qiymatlari. Shunday qilib, rlog protsedurasi aniqlanadi, qabul qiluvchi satr (jurnalda qayd etiladi) va qaytarilgan ishning muvaffaqiyatli bajarilishini ko'rsatadi.


dastur Log_prog ( versiya. Log_ver ( int. Rlog (string) \u003d 1; ) \u003d 1; ) \u003d 0x31234567;

RPCGen (L) kompilyator lizing sarlavhasini yaratadi, u erda, xususan, protseduralar belgilanadi:


Ushbu faylni diqqat bilan ko'rib chiqing. Tuzuvchi Rlog nomini Interface tavsifida belgilangan, Rlog_1-da belgilangan, katta harflarni chiziqqa almashtirish va pastki qismida versiya raqamini almashtirish. Qaytarilgan qiymatning qiymati int * -da o'zgargan. Ushbu qoida - RPC parametrlar interfeysini tavsiflashda faqat ko'rsatilgan manzillarni uzatish va olish imkonini beradi. Xuddi shu qoida qat'iy bahs sifatida etkaziladi va yuqadi. Aslida, Rlog_l () funktsiyasi ham rlog_l () funktsiyasining argumentiga dalil sifatida uzatiladi.

Sarlavha fayliga qo'shimcha ravishda, RPCGen kompilyator (L) mijoz vilkali modul va server vilkasini yaratadi. Aslida, ushbu fayllarning matnida butun masofaviy qo'ng'iroq kodi tuziladi.

Server vilkasi - bu mijoz bilan barcha tarmoq o'zaro ta'sirini qayta ishlash dasturi (aniqroq, uning vilkasi bilan). Operatsiyani bajarish uchun server vilkasi mahalliy funktsiyalarni keltirib chiqaradi, uning matnini yozish kerak:


Mijoz vilkasi masofadan boshqarish vositasi tomonidan uzatiladigan argumentni qabul qiladi, shuningdek, PortMap Server (1 m) bo'yicha so'rovni keltirib chiqaradi, uzoq protsedura serveri bilan aloqa o'rnatadi va nihoyat qaytish qiymatini mijozga uzatadi. Mijoz uchun masofadan boshqarish pultini chaqiruv vilkani chaqirish va odatdagi mahalliy qo'ng'iroqdan farq qilmaydi.

mijoz.c.


#Include. #Include. "Log.H" asosiy.(int. argc char. * argv) (mijoz * cl; char. * Server, * mitstring, * colttime; vaqt_t bintime; int. * Natija; agar (Argc! \u003d 2) (FPRINF (Stordf (strestf):% S Manzil_chost \\ n ", Argv); Chiqish (1);) server \u003d argv; / * Biz mijoz deskriptorini olamiz. Muvaffaqiyatsiz bo'lsa - keling, server bilan ulanishni o'rnatishning iloji yo'qligini xabar qilaylik * / agar ((C1 \u003d C1 \u003d C1, log_prog, log_ver, "UDP") "UDP") ") (CLNT_PCREEREEDROR (Server); Chiqish (2);) / * Satr uchun buferni ajratib ko'rsatish * / Mystring \u003d ( char. *) malloc (100); / * Voqea vaqtini belgilang * / Bintime \u003d vaqt ((vaqt_t *) nol; CLNTTIME \u003d CTIME (& BINTIME); Sprintf (Mystring,% s mijoz ishlamoqda », lolttime); / * Keling, jurnal uchun xabar beraylik - mijozning boshlanish vaqti. Muvaffaqiyatsiz bo'lsa - men xato haqida xabar beraman * / agar ((Natija \u003d Rlog_l (& Mystring, CL)) \u003d\u003d Nol) (Fprintf (Stordf (Stordr, "Xato2 \\ n"); CLNT_PERROR (CL, Server); Chiqish (3););) / * B masofadan kompyuterda muvaffaqiyatsizlikning holati kelmaydi * / agar (natija! \u003d 0) fprintf (Stord, "jurnalga xat yozish xatosi; / * 0 skeleton deskriptor * / Cint Yo'q (CL); Chiqish (0); )

Log_CLNT.C mijoz vilkasi mijoz-modulli Mijoz dasturini qabul qilish uchun mijoz-moduli bilan tuziladi.


Endi ba'zi bir xost server.nowner.ru, siz server jarayonini boshlashingiz kerak:


$ Logging.

Shundan so'ng, boshqa mashinada mijozni boshqa mashinada boshlaganda, server jurnal fayliga tegishli yozuvni qo'shadi.

Ushbu holatdagi RPC operatsion sxemasi rasmda ko'rsatilgan. 1. Modullar quyidagicha o'zaro ta'sir qiladi:

  1. Server jarayoni boshlanganda, u Speter rozetkasini yaratadi va har qanday nosozlikni ushbu rozetka bilan bog'laydi. Keyinchalik server kutubxona funktsiyasini SVC_REGISTER (3N) dastur raqamlarini va uning versiyasini ro'yxatdan o'tkazishga chaqiradi. Buning uchun funktsiya portmap (IM) jarayonini anglatadi va kerakli qiymatlarni uzatadi. Portmap serveri (IM) odatda tizim ishga tushirilganda boshlanadi va ba'zi taniqli port bilan bog'liq. Endi portmap (3n) bizning dasturimiz va versiyamiz uchun port raqamini biladi. Server so'rov kutmoqda. Ta'kidlash joizki, barcha tasvirlangan harakatlar RPCGen kompilyator (IM) tomonidan yaratilgan server vilkasi tomonidan amalga oshiriladi.
  2. Rlog dasturi ishga tushirilganda, u amalga oshiradigan birinchi narsa - CLNT_CRATE kutubxonasi funksiyasini, dastur raqamlari, dastur raqamlari va versiyasi, shuningdek, transport protokoli ko'rsatilgan CLNT_CRATE kutubxonasini chaqiradi. Funktsiya PortMap Server (IM) masofadan turib-serverga so'rov yuboradi. LOGER serveri uchun masofadan turib port raqamini oladi.
  3. Mijoz mijozning vilkasini rozetkada belgilangan va vilkasini nazorat qilishni uzatadi. Bu, o'z navbatida, so'rovni shakllantiradi (DRD formatiga dalillarni kiritish) Portmap serveridan (IM) olingan masofaviy portga yuboradi. Keyin u bir muncha vaqt javob beradi va holatda davolanish so'rovni qayta yuborgan bo'lsa. Qulay sharoitlarda so'rov logger serveri tomonidan qabul qilinadi (server surunkali moduli). Vilkasi qaysi funktsiyani (protsedura raqami bo'yicha) belgilaydi va log`lim loghi modulining rlog_1 () funktsiyasini chaqiradi Qo'llangan vilkaga qaytarilgandan so'ng, ikkinchisi XDR formatida qaytarilgan qiymatni o'zgartiradi va UDP paketida javob keltiradi. Javobni olgandan so'ng, mijoz qaytarish qiymatini olib, uni o'zgartiradi va mijozning bosh dasturiga qaytadi

) Masofaviy protsessor Qo'ng'iroqlar kontseptsiyasi

Masofaviy protsessor Call - RPC (masofadan boshqarish pulti - RPC) - bu tarmoq ichidagi barcha mashinadagi taniqli va tushunarli nazorat mexanizmini va dasturni tarmoq ichidagi barcha mashinalarni tarmoq orqali uzatishga mo'ljallangan. Masofadan qo'ng'iroq qilish vositalari taqsimlangan hisoblashni tashkil etishni osonlashtirishga mo'ljallangan. RPC-dan foydalanishning eng katta samaradorligi cheklangan komponentlar o'rtasida oz vaqt va uzluksiz ma'lumotlar bilan interfaol aloqada bo'lgan dasturlarda erishiladi. Bunday dasturlar RPC-yo'naltirilgan deb ataladi.

Mahalliy protseduralar qo'ng'irog'ining o'ziga xos xususiyatlari:

Asimmetriya, ya'ni o'zaro ta'sir qiluvchi partiyalardan biri tashabbuskor; Sinxroniklik, ya'ni qo'ng'iroq qilish tartibining ijrosi, agar u so'rov o'rniga to'xtagan bo'lsa va faqat chaqirilgan protseduradan qaytsa, davom etadi.

Masofaviy qo'ng'iroqlarni amalga oshirish mahalliy qo'ng'iroqlar muammolarini amalga oshirish bilan ancha murakkablashadi. Qo'ng'iroqlar va protseduralar turli xil mashinalarda o'tkazilgandan so'ng, ular turli xil manzil maydonlariga ega, ayniqsa mashinalar bir xil emas, balki parametrlar va natijalarni uzatishda muammolarni keltirib chiqaradi. RPC umumiy xotirani hisoblay olmaydi, demak RPC parametrlari hech bo'lmagan xotira kameralarida va parametrli qiymatlardan boshqasiga nusxa ko'chirilishi kerak. RPCning mahalliy qo'ng'iroqning navbatdagi farqi shundaki, u, albatta, asosiy aloqa tizimidan foydalanadi, ammo bu aniq tartibda yoki protseduralarda aniq ko'rinmasligi kerak. Soflik qo'shimcha muammolarni keltirib chiqaradi. Bitta mashinada keltirilgan dasturning ijrosi va bir mashina bitta jarayonda amalga oshiriladi. Ammo kamida ikkita jarayonlar RPCni amalga oshirishda ishtirok etadi - har bir mashinada. Agar ulardan biri tugashga to'g'ri kelsa, quyidagi holatlar ro'y berishi mumkin: sababli protseduralar tasodifiy ravishda amalga oshirilsa va masofadan turib, masofadan turib javobni muvaffaqiyatsiz bajaradi protseduralar.

Bundan tashqari, dasturlash tillar va operatsion muhitning turli xilligi bilan bog'liq bir qator muammolar mavjud: ma'lumotlar tuzilmalari va har qanday dasturlash protseduralari har qanday dasturlash tilida qo'llab-quvvatlanmoqda.

Bu va boshqa ba'zi muammolar ko'plab tarqatilgan operatsion tizimlarning keng tarqalgan keng tarqalgan texnologiyalarini hal qiladi.

Asosiy RPC operatsiyalari

RPC ishini tushunish uchun birinchi navbatda mashina operatori odatdagi mashinada o'tkaziladigan muntazam ravishda foydalanish uchun birinchi navbatda ko'rib chiqing. Masalan, tizim qo'ng'irog'i bo'ladi

Hisoblash \u003d o'qish (FD, Buf, Nebetes);

bu erda FD butun son
Buf - belgilar qatoriga,
Nbites butun son.

Ushbu protsedura parametrlarni teskari tartibda qoziqqa tushirish (3.1-rasm) deb qo'ng'iroq qilish. O'qish qo'ng'irog'idan keyin u reestrga qaytarilgandan so'ng, qaytarish manzilini o'zgartiradi va uni asl holatiga qaytarib, stakandan parametrlarni tanlab, qo'ng'iroq qiluvchi protsedurasini boshqaradi va uni asl holatiga qaytaradi. E'tibor bering, parametrlar bilan parametrlar bilan yoki ma'lumot bilan yoki qiymat bo'yicha (qiymat bo'yicha). Ushbu qoidalarga nisbatan qadriyatlar mahalliy o'zgaruvchilar boshlanadi. Ushbu protsedura ularni o'zgartirishi mumkin va bu qo'ng'iroq qiluvchilar protsedurasida ushbu o'zgaruvchining asl nusxalariga ta'sir qilmaydi.

Agar o'zgaruvchiga ko'rsatgich "o'zgaruvchan" deb nomlangan protseduraga uzatilsa, unda ushbu o'zgaruvchining qiymatidagi o'zgarishlar ushbu o'zgaruvchining qiymatidagi o'zgarishlar ushbu o'zgaruvchining qiymatidagi o'zgarishlarni va sababli protseduraning o'zgarishi sabab bo'ladi. Bu haqiqat RPC uchun juda katta.

U shuningdek, S.-da ishlatilmagan boshqa parametrlarni uzatish mexanizmi mavjud, u qo'ng'iroqni nusxalash / tiklash deb ataladi va qo'ng'iroqni qiymatlar shaklida nusxalash, so'ngra qo'ng'iroq tugagandan so'ng orqaga qaytish Qo'ng'iroq qilish tartibining dastlabki qiymatlari.

Fikrlarni ishlatish uchun parametrlarni yuborishning qaysi mexanizmi Til ishlab chiqaruvchilari tomonidan qabul qilinadi. Ba'zan u uzatiladigan ma'lumotlar turiga bog'liq. Masalan,, masalan, butun va boshqa skalalar ma'lumotlari bilan tilda har doim qiymat va massivlar bilan uzatiladi.

Anjir. 3.1. a) o'qishni tekshirishdan oldin stakan;
b) protsedura davomida stek;
c) qo'ng'iroq qilish dasturiga qaytgandan so'ng

RPC-ga asoslangan g'oya - bu mahalliy protseduraga, shuningdek, qo'ng'iroqqa ko'rinadigan masofaviy protsessorga qo'ng'iroq qilish. Boshqacha aytganda - RPC shaffof qilish uchun: Qo'ng'iroqchi deb nomlangan protsedura boshqa mashinada va aksincha ekanligini bilish kerak emas.

RPC quyidagicha oshkoralikka erishadi. Ushbu protsedura chindan ham masofadan turib, kutubxona mahalliy protseduraning o'rniga, mijozning stubiga (stub - plug) yuborilgan protseduraning boshqa versiyasi joylashtiriladi. Dastlabki protsedura kabi, stub qo'ng'iroq tartibida (3.1-rasmda bo'lgani kabi), shuningdek, yadroga kirish paytida ham xalaqit beriladi. Faqat original protseduradan farqli o'laroq, u registrlardagi parametrlarni joylashtirmaydi va yadrodan ma'lumotni so'ramaydi, aksincha, masofaviy mashinani yadroga yuborish uchun xabar keltirib chiqaradi.

RPCning qatl etilishi bosqichlari

Ushbu protsedurani masofadan qo'ng'iroq qilishda dasturiy tarkibiy qismlarning o'zaro ta'siri 3.2-rasmda keltirilgan. Mijozning shahobasi mijoz dasturi tomonidan chaqirilgandan so'ng, uning birinchi vazifasi buferni yuborish orqali to'ldirishdir. Ba'zi tizimlarda mijoz stubida har bir yangi so'rov kelib tushganidan keyin har safar to'ldirilgan bir marta to'ldirilgan. Boshqa tizimlarda xabar buferi individual xabar maydonlari uchun bufer puli va bu tamponlar allaqachon to'ldirilgan. Ushbu usul, ayniqsa, paket ko'p sonli maydonlardan iborat formatga ega bo'lganda, ammo bu sohalardagi ko'pchilik qadriyatlari qo'ng'iroqqa qo'ng'iroq qilishdan o'zgarmaydi.

Keyin parametrlar tegishli formatga o'zgartirilishi kerak va xabar buferiga kiritiladi. Shu nuqtada, xabar uzatish uchun tayyor, shuning uchun yadro qo'ng'iroqning uzilishi amalga oshiriladi.

Anjir. 3.2. Masofaviy protsessor

Kerrel nazoratni qabul qilganda, u kontekstlarni o'zgartiradi, protsessor registrlari va xotira kartasini saqlaydi (sahifa tavsifi), yadro rejimida ishlash uchun ishlatiladigan yangi xotira kartasini o'rnatadi. Kernelning kontekstlari va undan farqli o'laroq, yadro o'z manziliga ega bo'lishi uchun, manzilga o'z manziliga mos keladi, manzil manzili (a, boshqa sarlavha maydonlarini) eslab qolishi kerak va u bo'lishi kerak uning tarmoq interfeysiga o'tkazildi. Bu mijoz tomonida ishlashni yakunlaydi. Transmissiya taymeri yoqilgan va yadrolar javobni tsiklik tekshiruvini o'tkazishi yoki ijro etish uchun boshqa jarayonni tanlaydigan rejalashtiruvchisining nazoratini o'tkazishi mumkin. Birinchi holda, so'rov tezlashib boradi, ammo mo'riptmentlash yo'q.

Server tomonida, kiruvchi bitlar qabul qiluvchi vositasi yoki o'rnatilgan bufer yoki RAMda joylashtiriladi. Barcha ma'lumotlar olinganda, to'sig'i hosil bo'ladi. Bo'shashgan ishlov beruvchi paket ma'lumotlarining to'g'riligini tekshiradi va pichoqni yuqtirish kerakligini aniqlaydi. Agar biron bir stublardan hech biri bu paketni kutmasa, ishlov beruvchini buferga yoki hatto rad qilish kerak. Agar kutish stubi bo'lsa, xabar unga ko'chiriladi. Va nihoyat, kontekstlar o'zgaradi, natijada stub qabul qilish uchun qo'ng'iroq qilgan paytda, ularda bo'lgan qadriyatlarni qabul qilish va xotira kartasi paydo bo'ladi.

Endi server stub ish boshlaydi. U parametrlarni ochib, ularni mos ravishda suyakka joylashtiradi. Hamma narsa tayyor bo'lganda, server qo'ng'iroq qiladi. Jarayonni tugatgandan so'ng, server natijalarni mijozga uzatadi. Buning uchun yuqorida tavsiflangan barcha bosqichlar faqat teskari tartibda amalga oshiriladi.

3.3-rasmda har bir RPC qo'ng'irog'i uchun amalga oshirilishi kerak bo'lgan buyruq ketma-ketligini ko'rsatadi va 3,4-rasm - RPCning umumiy hajmining qaysi qismi tavsiflangan 14 bosqichini bajarishga sarflanadi. Tadqiqotlar o't o'chiruvchi tomonidan o'tkazilgan va beshta protsessorlarning mavjudligi aniqlangan bo'lsa ham, o'lchash natijalariga ta'sir ko'rsatgan bo'lsa ham, bu RPCning ijro etish jarayonining umumiy g'oyasini beradi.

Anjir. 3.3. RPC protsedurasini ijro etish bosqichlari

Anjir. 3.4. RPCning 14 bosqichida vaqtni taqsimlash

1. Qo'ng'iroqqa qo'ng'iroq qiling

2. Buferni tayyorlang

3. Paket parametrlari

4. Sarlavha maydonini to'ldiring

5. Xabarda tekshiruv sumkasini hisoblang

6. yadroga aralashish

7. Bajarish uchun paketning navbati

8. Xabarni qbus avtobus boshqaruvchisi-ga o'tkazish

9. Ethernet uchun uzatish vaqti

10. Tekshiruvchidan paket oling

11. Qayta ishlash tartibi

12. Cheksumni hisoblash

13. Foydalanuvchi bo'sh joyiga o'tish konteksti

14. Server stubini bajarish

Dinamik bog'lash

Mijoz qanday qilib serverning manzilini belgilaydi degan savolni ko'rib chiqing. Ushbu muammoni hal qilish usullaridan biri bu mijoz dasturida serverning tarmoq manzilidan bemalol foydalanishdir. Ushbu yondashuvning yo'qligi uning favqulodda harakati: server harakatlanayotganda yoki ushbu va boshqa ishlarda interfeys o'zgarganda yoki boshqa holatlar o'zgarganda, ulardan foydalanilgan barcha dasturlarni qayta tuzatish kerak Server manzilining qat'iy vazifasi. Ushbu muammolardan qochish uchun ba'zi tarqatilgan tizimlarda dinamik bog'lanish ishlatiladi.

Dinamik bog'lashning dastlabki lahzasi serverning rasmiy ta'rifi (spetsifikatsiyasi). Spinsifikatsiya fayl serverining ismini, mijozlar uchun ushbu server tomonidan taqdim etilgan protseduralar raqami va protseduralari ro'yxati (3.5-rasm). Har bir protseduraning uchun uning parametr serverga nisbatan kirish yoki chiqish parametrini ko'rsatuvchi ko'rsatmalaridan iborat. Ba'zi parametrlar bir vaqtning o'zida kiritish va chiqish bo'lishi mumkin - Masalan, mijozga serverga yuborilgan ma'lum bir qator u erda o'zgartirilgan va keyin mijozga qaytariladi (nusxa ko'chirish / tiklash).

Anjir. 3.5. RPC server spetsifikatsiyasi

Rasmiy server spetsifikatsiyasi mijozlar va server pichoqlarini yaratadigan Staby generator dasturi uchun manba ma'lumotlari sifatida ishlatiladi. Keyin ular tegishli kutubxonalarga joylashtirilgan. Foydalanuvchi (Mijoz) dasturi server spetsifikatsiyasida belgilangan har qanday tartibda belgilangan har qanday tartibda belgilangan tartibda ikki tomonlama protsedura o'zaro kodeksi bilan bog'liq. Shunga o'xshab, server tuzilganda server pichoqlari u bilan bog'liq.

Serverni ishga tushirganingizda, uning birinchi harakati - bu Serverning "OHM" deb nomlangan maxsus dastur bilan uning server interfeysini o'tkazilishi, uning nomi Server, Noyob identifikatorini o'z ichiga oladi Va haydovchilarning joylashuvišish shartnomasi. Belgilangan deskriptor tizimli mustaqil va IP, Ethernet, x.500 yoki boshqa manzilni o'z ichiga olishi mumkin. Bundan tashqari, autentifikatsiya kabi boshqa ma'lumotlarni o'z ichiga olishi mumkin.

Moddiy bo'lsa, mijoz uzoq vaqt davomida masofadan protseduralardan biriga qo'ng'iroq qilsa, mijozning stubi serverga hali ulanmaganligini va kerakli versiyaning interfeysini import qilishni so'rab Bog'lovchi xabarini yuboradi kerakli server. Agar bunday server mavjud bo'lsa, Biger belgi va noyob identifikatorni mijozning pichoqiga o'tkazadi.

So'rovda xabar yuborayotganda mijoz pichoqchani manzil sifatida ishlatadi. Ushbu xabarda server yadroidan foydalanilgan parametrlar va noyob identifikatorni o'z ichiga olgan parametrlar va ushbu mashinada bir nechta mashinada bo'lsa, kerakli serverga yuborilishi kerak.

Import / eksport interfeyslarida tashkil etilgan ushbu usul yuqori moslashuvchanlikka ega. Masalan, bir xil interfeysni qo'llab-quvvatlaydigan bir nechta serverlar bo'lishi mumkin va mijozlar tasodifiy serverlardan tarqatiladi. Ushbu usulning bir qismi sifatida serverlarni davriy ravishda o'rganish, ularning ishlashini tahlil qilish, ularning ishlashini tahlil qilish va rad etilgan taqdirda, bu tizimning umumiy nosozligini oshiradi. Ushbu usul shuningdek mijoz autentifikatsiyasini ham qo'llab-quvvatlashi mumkin. Masalan, server uni faqat mijozlar tomonidan ma'lum bir ro'yxatdagi foydalanish mumkinligini aniqlashi mumkin.

Biroq, dinamik bog'lanish eksport va import interfeyslari uchun qo'shimcha xarajatlar (vaqtincha xarajatlar). Ushbu xarajatlarning kattaligi ahamiyatli bo'lishi mumkin, chunki aksariyat mijozlar jarayoni qisqa vaqt ichida mavjud va har safar jarayon jarayonni qayta ishga tushirish kerak. Bundan tashqari, Bilag' dasturi katta taqsimlangan tizimlarda shisha bilan shug'ullanishi va shunga o'xshash maqsadli dasturlarni yaratish, shuningdek, jarayonlarni yaratish va sinxronlashtirish borligini ham ko'paytiradi.

Xavfsizlik holatida RPC semantika

Ideal holda, RPC to'g'ri ishlaydi va qulashi mumkin bo'lsa. Qo'riqchilarning quyidagi sinflarini ko'rib chiqing:

Mijoz serverning joylashgan joyini, masalan, kerakli server ishlamayotgan bo'lsa yoki mijoz dasturi uzoq vaqt davomida tuzilganligi sababli va server interfeysining eski versiyasidan foydalanganligi sababli. Bunday holda, mijozning so'roviga javoban xabarda xato kodi mavjud. Mijozdan serverga so'rovni yo'qotdi. Eng oson echim - ma'lum bir vaqtdan keyin so'rovni takrorlang. Mijozga serverdan yo'qolgan javob. Ushbu parametr avvalgisidan ancha murakkabroq, chunki ba'zi protseduralar tebtsiz emas. Idempotents protsedura deb ataladi, ularni bajarish so'rovi bir necha bor takrorlanishi mumkin va natijada natija o'zgarmaydi. Bunday protsedura misoli faylni o'qish mumkin. Ammo bank hisobvarag'idan ba'zi miqdorni olib tashlash tartibi - bu bema'ni emas va javob yo'qotgan bo'lsa, takroriy so'rov mijozning hisob raqamini sezilarli darajada o'zgartirishi mumkin. Mumkin bo'lgan echimlardan biri bu barcha protseduralarni ITMPEMP vositasiga olib kelishdir. Biroq, amalda har doim ham muvaffaqiyatga erisha olmaydi, shuning uchun boshqa usuldan foydalanish mumkin - mijoz yadrosi tomonidan barcha so'rovlarning izchil raqami. Server Kernel har bir mijozning eng so'nggi so'rovining sonini eslaydi va har bir so'rovni qabul qilish tahlilni amalga oshiradi - bu so'rov birlamchi yoki takrorlanmaydimi yoki yo'qmi. Server so'rov olgandan keyin qulab tushdi. Bu, shuningdek, mulkdorlik uchun juda muhim, ammo afsuski, raqamlarni raqamlash so'rovlari bilan talab qilinmaydi. Bunday holda, bu muhim

    Java RMI tarmoqdan mustaqil emas, balki va maqsadga muvofiq ishlashning asosiy bosqichlari sifatida. Taqsimlangan va ularni taqqoslashni taqqoslash Java dasturlari. Arxitektura, vilka va skelet darajasi, uzoq havolalar va Java RMI transport.

    Bajarish joyida SQL so'rovlarini oldindan taqsimlash. Preparat ko'rsatmalaridan foydalaning. Protsedura yoki funktsiya tomonidan qaytarilgan qiymatni olish uchun qo'ng'iroqni aniqlash sintaksisidan foydalanish. So'rov bo'yicha namuna uchun ko'rsatmalar yaratish.

    Maqsad va ish sxemasi. Tarkibi va o'rnatish. Http paketni protseduralar spetsifikatsiya qilish.

    Tajribalar va funktsiyalar ba'zi algoritmni amalga oshiradigan yopiq dastur birliklari sifatida belgilanishi mumkin. Aslida, protsedura yoki funktsiya deyarli dasturdir.

    Avtomatlashtirilgan TCP / IP-ni sozlash, Bootp yordamida dinamik konfiguratsiya konfiguratsiyasi. IP-so'rovlar / javoblar, yo'qotish va xabar formatida, fazalar parchalanadi. DHCP protokoli JVP protokolini kengaytirish. IP manzillarini tarqatish va tayinlash.

    Trurursiya tushunchasi bilan biz allaqachon uchrashdik: takrorlanadigan nisbatlar matematik ifodalarda keng tarqalgan. Aniqlik bo'yicha rekursiya shuni anglatadiki, aniq kontseptsiya ushbu kontseptsiya orqali aniqlanadi.

    1. Kirish 2 2. com texnologiyasining umumiy ma'lumotlari 2 2.1. Com ob'ektining tarkibi 3 2.2. 4 2.3 interfeyslari. Com ob'ektlarining xususiyatlari 6 2.4. Com serverlari 6 2.5. Marshalling mexanizmi 7.

    Aqlini, foydalanish printsipini va masofadan turib ma'lumotlar bazalarining asosiy maqsadi. Model masofaviy boshqarish Ma'lumotlar (fayl serveri modeli). Parallelizm turlari. TRIGGER - bu ma'lumotlar bazasi shtati bilan bog'liq bo'lgan maxsus tadbirlarni kuzatish mexanizmi.

    Metamomojon, fakt va xavfsizlikning paketlari. Mijozning kontseptual modeli. Tarqatilgan arxitektura faoliyatiga misol. Amalga oshirishning to'liqligi.

    DLL tushunchasi. DOS dasturlash jarayonini eslang. Mashinalar kodida manbali matnni aylantirish 2 ta jarayonlar: kompilyatsiya va bog'lash. Dastur kodi bilan bog'lanish paytida nafaqat funktsiyalar va protseduralar e'lonlari, balki ularning to'liq kodlari joylashtirildi.

    TCP / IP, rozetka, bog'lash, tinglash va qabul qilish uchun funktsiyalar. Fayl tavsifi. Aloqa jarayonlari. Ma'lumotlarni olish. Rozetkadan o'qish. Rozetkaga yozing. Rozetkani yopish. Dastur matni veb-serverni yaratadigan dastur operatsion tizim Qnx.

    Internetga kirish tarmog'iga kirish elektron xabarlarserverda saqlanadi. Dastur tavsifi, oson, apop va autentifikatsiya autentifikatsiyasi. Amaliyot funktsiyalari, foydalanuvchi qo'llanmasi, dasturi ishlaydigan algoritmlar, grafik interfeys.

    Turbo-Paskal dasturlash tilining asosiy operatorlarining ishlash printsipi: Ish tanlash, ishni tanlash, shartsiz o'tish, so'zsiz o'tish, tsikl, tutish, kompozit. Rasmiy tavsif va qo'ng'iroq funktsiyasi va protseduralari. Haqiqiy parametrlar ro'yxatiga qo'yiladigan talablar.

    Java serverklarining ishlash va maqsadi, ularning veb-serverlarining ishlashini yaxshilash va ulardan dasturlash, afzalliklari va kamchiliklarini takomillashtirish. Brauzer va sahifalardan sererali usullar. Sessiya atributlarini yozib olish va o'qish.

    Windows NT arxitekturasi. Mikrokerat asosida OT tarkibi. Windows NT xavfsiz quyi tizimlar.

    Taqsimlangan tizimlarda xabar almashishning asosiy praxtasi. Manzillash usullari. Priitivlarni blokirovka qilish va blokirovka qilish. Buferlash mumkin emas va priitivlarni buzmaydi.

    Ilovalar serveri. Mijozning qismi.

    Ikki yil oldin, Ayaks hayratda edi (va keyin Ajax so'zi ixtiro qilmadi). Hozirgi kunda pashshada yangilangan veb-ilovalar, narsalarning tartibida. Aksincha, hatto: "Ajaxsiz ba'zi xizmatlarni tasavvur qilish qiyin.

    Sintaksis tavsifi va qo'ng'iroq qilish tartibi. Parametrlar. Misolni tavsiflash va protsedura. Parametrlar turlari. Dastur.