JavaRush /Kurslar /All lectures for UZ purposes /Uch qavatli arxitektura

Uch qavatli arxitektura

All lectures for UZ purposes
Daraja, Dars
Mavjud

Uch qavatli arxitektura bilan tanishuv

Uch qavatli arxitektura — internetdagi eng keng tarqalgan interaktiv arxitektura. U paydo bo'lgan vaqti, ikki qavatli server qismini ikkiga ajratishdi: logika qatlami va ma'lumotlar qatlami.

Bu quyidagicha ko'rinish olgan:

Mijoz qatlami — foydalanici bilan o'zaro ta'sirda bo'lgan "taqsimlangan ilova"parchasi. Ushbu qatlam biznes-logikasini o'z ichiga olmasligi va muhim ma'lumotlarni saqlamasligi kerak. U bazalar bazasi bilan to'g'ridan-to'g'ri o'zaro ta'sir qilmasligi kerak, balki faqat biznes-logikasi orqali kontaktda bo'lishi kerak.

Ammo, baribir, bu yerda ba'zi logika mavjud. Birinchidan, bu foydalanuvchi interfeysi orqali o'zaro ta'sir, uning kiritgan ma'lumotlarini tekshirish, mahalliy fayllar bilan ishlash. Shuningdek, foydalanuvchi avtorizatsiyasi va server bilan ishlashda ma'lumotlarni shifrlash to'g'risidagi barcha narsalarni ham o'z ichiga olishi mumkin.

Ikkinchidan, bu oddiy biznes logika. Masalan, internet-do'kon mahsulotlar ro'yxatini yubordi, mijoz tomonida biz ularni saralash, filtrlash mumkin. Va bu erda ham muhim ma'lumotlarni saqlash mavjud: keshlar, loginlanayotgan foydalanuvchi kukilari va hokazo.

Biznes-logika qatlami ikkinchi darajada joylashgan bo'lib, ko'pchiligi biznes-logikasi shu yerda to'plangan. Undan tashqarida faqat mijozga eksport qilingan bo'laklar va bazalar bazasiga o'zlashtirilgan logika elementlari (saqlangan protseduralar va triggerlar) qolgan.

Ko'pincha biznes-logika serverlari nafaqat bu logikaning o'zini, balki masshtablantirish masalalarini ham hal qiladi: kod qismlarga ajratilib, turli serverlarga tarqatiladi. Ba'zi maxsus talab qilinadigan xizmatlar o'nlab serverlarda ishlashi mumkin. Navoji (load balancer) orqali ular orasida yuklash boshqariladi.

Server ilovalari odatda shu tarzda loyihalangan bo'lib, yana bir server nusxasini ishga tushirish oson bo'lishi va u boshqa nusxalari bilan birgalikda ishlay boshlash imkoniyatiga ega bo'lishi mumkindir. Ya'ni, server kodini yozish jarayonida ham, statik sinfi yagona nusxada ishga tushirilganiga hech qachon kafolat bera olmaysiz.

Ma'lumotlar qatlami ma'lumotlarni saqlashni ta'minlaydi va alohida darajada amalga oshiriladi, odatda, ma'lumotlar bazasi boshqaruv tizimlari (DBMS) vositalari bilan amalga oshiriladi, bu komponentga ulanish faqat ilovalar server darajasidan ta'minlanadi.

Ma'lumotlar qatlami alohida qavat qilish sabablari

Ma'lumotlar qatlamini alohida uchinchi qatlam sifatida ajratib olish ko'plab sabablarga ko'ra amalga oshirildi, ammo eng asosiy sabab — bu serverga yuk bo'lgan yuk ortishi edi.

Birinchidan, bazalar bazalari ko'proq xotira va ma'lumotlarni qayta ishlash uchun protsessor vaqtini talab qila boshlashdi. Shuning uchun ular ko'pincha alohida serverlarga olib chiqildi.

Yuklangani ortib borayotganida, backendni osonlik bilan ko'paytirish mumkin edi va bir serverning o'nta nusxasini ishga tushirish mumkin edi, lekin bazani dublikat qilish mumkin emas edi — baza hanuzda tizimning yakka va bo'linmas komponenti edi.

Ikkinchidan, bazalar bazalari aqlli bo'lib qolgan — ularda o'zining biznes-logikasi paydo bo'ldi. Ular saqlangan protseduralar, triggerlar, PLSQL kabi o'z tillarini qo'llab-quvvatlay boshlashdi. Va hatto DBMS ichida bajariladigan kod yozadigan dasturchilar ham paydo bo'ldi.

Ma'lumotlar bilan bog'liq bo'lmagan logika bэkenda olib chiqildi va o'nlab serverlarda bir vaqtda ishladi. Dasturlar faqat DBMS ichida amal qilishni davom ettirdi va allaqachon yuk ortishi muammolarini hal qilish uchun o'z usullarini qo'llash kerak edi:

  • Bazada bazali klaster — bir xil ma'lumotlarni saqlaydigan va ma'lum bir protokol orqali ularni sinxronlaydigan DB serverlari guruhi.
  • Shardlash — ma'lumotlar mantiqiy bloklarga ajratiladi va turli DB serverlariga tarqatiladi. Ushbu yondashuvda DB o'zgartirishlarni qo'llab-quvvatlash juda qiyin.
  • NoSQL yondashuvi — juda ko'p ma'lumotlarni saqlash uchun mo'ljallangan DBlarda ma'lumotlarni saqlash. Bu ko'pincha hatto bazalar emas, balki maxsus fayllar saqlash tizimlari. Relyatsion ma'lumotlar bazalariga qaraganda funktsional juda kam.
  • Ma'lumotlarni kesh ishlatayapti. Ma'lumotlar bazasi darajasida oddiy keshlash o'rniga, ma'lumotlarni faqat xotirada saqlaydigan butun bir kesh DBMS paydo bo'ldi.

Aydin bo'ladiki, ushbu server texnologiyalari zookini boshqarish uchun alohida odamlar va/yoki butun jamoalar kerak edi va bu ma'lumotlar qatlamini alohida qatlamga ajratib olishga olib keldi.

Muhim! Barcha ilg'or texnologiyalar yirik IT-korporatsiyalarining ichki qatlamlarida paydo bo'ladi, qachonki eski yondashuvlar yangi chaqiriqlarga bardosh bera olmasa. Bazalarni alohida qatlam sifatida ajratib olishni qandaydir dasturchi emas, balki o'rta rangli Oracle yoki IBM kabi ingenerlar guruhi o'ylab topdi.

Qiziqarli! Tsukerberg Facebook yozishni boshlaganda, u faqat PHP+MySQL kodida ishlagan. Foydalanuvchilar millionlab bo'lganida, maxsus tarjimotchi yaratildi, bu butun PHP kodini C++ ga tarjima qildi va uni asosiy mashina kodiga kompilyatsiya qildi.

MySQL ham milliardlab foydalanuvchi ma'lumotlarini saqlashga qodir emas edi, shuning uchun Facebook NoSQL bazalari kontsepts'iyasini yarattdi va kuchli server NoSQL-DBMS — Cassandra yozdi. Aytgancha, bu to'liq Java da yozilgan.

Ilova logikasini joylashtirishdagi noaniqliklar

Va garchi uch qavatli arxitektura deyarli aniq birikmalarni o'z qismlari o'rtasida taqsimlasa ham, har doim ham tizimning qaysi muayyan joyiga yangi biznes-logikasini (yangi kodni) qo'shish kerakligini to'g'ri belgilash imkoni yo'q.

Tasviriy noaniqlikning namoyishi quyidagi rasmdagidek:

Qorong'i fon — bu server qismi, oq — mijoz. So'nggi yondashuvning yaxshi namoyishi (o'ng qo'l varianti) - bu zamonaviy mobil ilovalar. Mijoz tomonida (telefon) ko'rinish (namoyish), logika va ma'lumotlar mavjud. Va faqat ba'zi paytlarda bu ma'lumotlar server bilan sinxronlashadi.

Chap qo'l variantining misoli — bu barcha logika serverda bo'lgan odatiy PHP-serveridir va mijozga allaqachon statik HTMLni beradi. Sizning loyihangiz ushbu ikki so'nggi variantlar oralig'ida biror joyda joylashadi.

Boshida, loyihani o'rganib chiqqaningizdan so'ng, siz uning ustida ishlayotgan dasturchilar bilan maslahatlashib, navbatdagi topshiriqning logikasini qayerda amalga oshirishingiz haqida maslahatlashishingiz kerak.

Bunday qilishdan uyalmang. Birinchidan, begona monastirda o'z nizom bilan aralashtirmang. Ikkinchidan, hamma uchun (shu jumladan siz uchun) siz kutgan joyda kerakli kodni topish osonroq bo'ladi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION