Muhammad Al-Xorazmiy nomidagi Toshkent Axborot Txnologiyalari Universiteti
“Taqsimlangan algoritmlar va tizimlar” fanidan
1-2-3-4-laboratoriya ishi
Klient-server ilovalarini qurish
Tarqalgan tizimlarda autentifikatsiya
Taqsimlangan tizimlarda konsensus: Paxos algoritmi
Taqsimlangan tizimlarda konsensus: Raft algoritmi
Bajardi: 210-18 guruh talabasi
Nomozboyeva Komila Ikromjon qizi.
Tekshirdi: Azimova Umida Asrolovna
Toshkent – 2022
1-laboratoriya ishi
Klient-server ilovalarini qurish
Dasturiy ta'minotni ishlab chiqish jarayoni - bu dasturiy ta'minotni ishlab chiqish tuzilgan qoidalar to'plamidir. Agar dastur klient-server arxitekturasini o'z ichiga olsa, uni klient -server ilovasi deb atash mumkin. Klient -server ilovasini ishlab chiqish klient -server arxitekturasini tanlashdan boshlanishi kerak. " Klient -server" arxitekturasi kamida ikkita o'zaro ta'sir qiluvchi mustaqil jarayon - klient va server mavjudligi bilan tavsiflanadi. Ma'lumotlar bazasi yoki fayl tizimi xizmati kabi ba'zi xizmatlarni bajaradigan jarayonlar serverlar deb ataladi va so'rov yuborib, so'ngra serverdan javob kutish orqali serverlardan xizmatlar talab qiladigan jarayonlar mijoz deb ataladi. Aslida, bu jarayonlar turli xil kompyuterlarga o'rnatiladigan va tarmoq protokollari yordamida kompyuter tarmog'i orqali bir-biri bilan o'zaro ta'sir qiluvchi dasturiy ta'minotdir, lekin ular bir xil mashinada ham joylashishi mumkin.
1-rasm. Ikki darajali klient-server arxitekturasi
Har qanday mijoz-server arxitekturasi uchta asosiy komponentni o'z ichiga olishi kerak:
ma’lumotlarni kiritish va ko‘rsatish (foydalanuvchi interfeysi);
berilgan predmet sohasiga xos amaliy funksiyalar;
axborot resurslarini boshqarish (ma’lumotlar bazasi yoki fayl tizimi va boshqalar).
Klassik mijoz-server arxitekturasida dasturning uchta asosiy qismi ikkita jismoniy dasturiy ta'minot bo'ylab taqsimlanishi kerak. Gartner Group, axborot texnologiyalari tadqiqotiga ixtisoslashgan kompaniya mijoz-server o'zaro ta'sirining quyidagi beshta ikki bosqichli (ikki bosqichli, 2 darajali) modellarini ishlab chiqaradi (ular ikki bosqichli deb ataladi, chunki dasturning uchta komponenti turlicha taqsimlanadi). ikkita tugun o'rtasida):
Rasm-2. Ikki darajali (ikki darajali) klient -server arxitekturasining o'zaro ta'sir modellari
Ikki bosqichli arxitekturaning afzalliklari:
Masshtabni o‘lchash qobiliyati
Uskunalarga nisbatan tejamkorlik
Kamchiliklari:
Faqat vertikal masshtabda (kattalashtirish
tizim komponentlarining ishlashi);
Yangi funksiyalarni integratsiyalashda qiyinchilik (mijoz va server o‘rtasidagi uchta komponentning amalga oshirilishiga qarab); Ko'p bosqichli arxitektura (N-darajali yoki ko'p darajali, ba'zan uch bosqichli arxitektura yoki uch bosqichli arxitektura deb ataladi, lekin bu alohida holat) mijoz-server texnologiyasini yanada takomillashtirishdir. Uch bosqichli arxitekturada ilgari mijoz ilovalarining bir qismi bo'lgan yoki to'liq serverda bo'lgan yoki bu ikki havola o'z funktsiyalarini o'zaro taqsimlagan barcha ma'lumotlarni qayta ishlash dastur serveri deb ataladigan alohida havolaga ajratilgan.
3-rasm. Qatlamli klient-server arxitekturasi
Java klient -server ilovalarini ishlab chiqish bo'yicha fikrlar Java-da tarmoq bilan o'zaro aloqa qilishning bir necha usullari mavjud. IO to'plami birinchi bo'lib, uzoq vaqt davomida tarmoqni ta'minlashning yagona mumkin bo'lgan yondashuvi bo'lib qoldi. Uning mohiyati shundan iboratki, rozetka server tomonidan va mijoz tomonidan yaratiladi (klient tomonidan aniq, server tomonidan - klient tomonidan ulanish so'roviga javoban). Har bir rozetkada u bilan bog'langan ikkita oqim mavjud (InputStream va OutputStream): biri xabarlarni yuborish uchun, ikkinchisi ularni qabul qilish uchun ishlatiladi. Bunday holda, ushbu oqimlar bilan barcha operatsiyalar bloklanadi, ya'ni. buyruqning bajarilishi ushbu operatsiyalarning davomiyligi uchun to'xtatiladi. Aytaylik, biz qidiruv robotining bir qismi bo'lgan sayt indekserini (Web Crowler) ishlab chiqishimiz kerak. Bitta saytga kirish 300 milodiy vaqtni oladi. Agar siz 1000 ta saytni indekslashingiz kerak bo'lsa, unda blokirovka rejimida u 300 x 1000 ms ni oladi, ya'ni. 300 soniya. IO dan foydalanganda ilovalarni tezlashtirish usuli - bu ko'p ish zarralari - vazifa qismlarga bo'lingan, ularning har biri o'z nazorat chizig'i tomonidan bajariladi. Misol uchun, 1000 ta saytni skanerlash uchun siz ularni 250 ta saytdan iborat to'rtta guruhga bo'lishingiz va har bir guruhdan saytlarni parallel ravishda skanerlashingiz mumkin. Eng mashhur o'zaro ta'sir modeli - har bir ulanish uchun alohida ipni yaratish. Shunday qilib, barcha ulanishlar parallel ravishda xizmat qiladi va bir-biriga aralashmaydi. Ushbu yondashuvning nochorligi iplar sonining chiziqli o'sishi va xizmat ko'rsatilayotgan ulanishlar sonining ortishi bilan talab qilinadigan xotira miqdoridir. Agar juda ko'p iplar (o'n minglab) yaratilgan bo'lsa, u holda server operatsion tizimi mavzu kontekstlarini almashtirish bilan band bo'ladi va foydali ish uchun vaqt qolmasligi mumkin. Kirish / chiqishni blokirovka qilish bilan bog'liq muammolarni hal qilish uchun kanallarni multiplekslashga asoslangan mexanizm ixtiro qilindi. Bu mexanizm Java 1.4.2 da paydo bo'ldi va Yangi IO (NIO) deb nomlandi. Mexanizmning mohiyati quyidagilardan iborat: multipleksor (Java atamasida selektor deb ataladi, java.nio.channels.Selector) mavjud bo'lib, u bir ipda kanallarni ketma-ket so'raydi (tarmoq o'zaro ta'sirida, tarmoq tomonidan amalga oshiriladi. java.nio.channels.SocketChannel va java.nio.channels.ServerSocketChannel sinflari). Har bir so'rov natijasida selektor kiritish-chiqarish operatsiyalarini bajarishga tayyor bo'lgan kanallarning identifikatorlarini qaytaradi (ya'ni, kanal masofaviy tizimga ulangan va endi unga so'rov yuborilishi mumkin, yoki aksincha, masofaviy tizim). kanalga biror narsa yozgan va endi bu ma'lumotlar undan yuborilishi mumkin o'qing). Bunday identifikatorlar "kalitlar" (java.nio.channels.SelectionKey) deb ataladi. Har bir kalit kanal qanday operatsiyani bajarishga tayyorligi haqida ma'lumotni o'z ichiga oladi. Ilovaning vazifasi barcha tugmachalarni aylanib chiqish va tegishli operatsiyalarni bajarishdir.
Do'stlaringiz bilan baham: |