Node.js-ning arxitekturasi va boshqa tillardagi ko'p qatorli dasturlash o'rtasidagi farq nima?


javob bering 1:

Ikkala hodisaga asoslangan va ko'p oqimli paradigmalarda kod operatsion tizim jarayonida bajariladi.

Agar protsedura bir nechta mavzularda ishlayotgan bo'lsa, ushbu mavzular o'qish va yozish uchun jarayon xotirasini (manzil maydoni) almashadi.

Node.js-ni boshqaradigan JavaScript, aslida bitta yo'nalishli. Har bir funktsiya to'liq bajarilishi kafolatlangan va ushbu funktsiya bajarilishi jarayonida boshqa JavaScript kodi ishlamaydi. Tabiiy asenkron hodisalar (tarmoq, diskni kiritish / chiqarish, taymer, boshqa qo'shimcha qurilmalar va operatsion tizim hodisalari) dvigatel tomonidan qayta ishlanadi, bu esa ushbu hodisalar uchun ishlov beruvchilar sifatida ro'yxatdan o'tgan JavaScript funktsiyalarini (yoki qaytish qo'ng'iroqlari) bajarilishi kerak bo'lgan hodisalar qatoriga qo'shadi. navbat tugashidan oldin.

Ko'p tarmoqli paradigmada ikki yoki undan ortiq mavzular parallel ravishda kodni bajaradi, shunda funktsional ish paytida boshqa protsessor yadrosida, ehtimol bir xil xotira manzillarini o'qish yoki yozishda kodning boshqa qismi bajarilishi mumkin. Agar kod umumiy operatsion tizimga kirishni boshqarish uchun maxsus operatsion tizim mexanizmlarini (sinxronizatsiya ibtidoiy vositalarini) ishlatmasa, bu noto'g'ri xotira holatiga olib kelishi mumkin.



javob bering 2:

Bu juda yaxshi savol: "Node.j-ning arxitekturasi va boshqa tillardagi ko'p qirrali dasturlash o'rtasidagi farq nima?"

Buni ozgina kamaytirishimiz mumkin va kerak.

  • Tugunning voqealarga asoslangan arxitekturasi

Hodisaga asoslangan arxitektura faqat tugunlar uchun mo'ljallanmagan, masalan. B. Tornado (Python), Vertx (Java), Akka (Scala), ReactiveX (bir nechta tillar).

  • Boshqa tillarda ko'p qirrali dasturlash.

Sukut bo'yicha JavaScript bir nechta mavzularni qo'llab-quvvatlamasligini unutmang. Bu, menimcha, iplar kabi ish tutadigan veb-ishchilarni qo'llab-quvvatlaydi.

Shu sababli, tadbirlarni boshqaradigan tugunlar uchun nafaqat mavjud, va tugunlarda ko'p o'qishni amalga oshirish mumkin.

Shunday qilib, ikkita savol tug'ilishi mumkin: "Voqealarni boshqaruvchi va ko'p o'qli o'rtasidagi farq nima" va "tugun va boshqa tillar (ramkalar) o'rtasidagi farq nima". Men ikkinchisiga to'xtalaman, chunki bu savolning maqsadi.

Node-ning o'ziga xos xususiyati shundaki, muallif veb-dasturlarni yaratishda I / O blokirovkasini oldini olish uchun uni yaratgan. Tugunlar jamoasining madaniyati - blokirovka qilinmaydigan I / O kuchini ta'kidlash va kuchaytirish. Uchinchi tomon kutubxonalari qo'ng'iroqlarini bloklaydigan juda ko'p topa olmaysiz. Node-dan foydalanadigan dasturchi sifatida siz kodingizda nozik to'siqlarga duch kelishingiz qiyin. Boshqa tillarda sodda ishlab chiquvchi tasodifan juda samarasiz blokirovka qo'ng'iroqlarini amalga oshirishi mumkin, masalan B. Ma'lumotlar bazasi ulanishidan o'qish.

Aytish kerakki, siz "parallelizm" ning ko'plab modellari haqida haqiqatan ham ko'proq ma'lumotga ega bo'lishingiz va har birining ijobiy va salbiy tomonlarini tushunishingiz kerak. Ko'p tarmoqli o'qishlar nega uzoq vaqt davomida qabul qilinganligini tushunish uchun bonusli ballar.



javob bering 3:

Kontseptual farqlar sizning boshingizni o'rash uchun juda oddiy.

Hodisalarga asoslangan arxitekturada sizning dasturingiz doimiy bitta tishli ko'chadan ishlaydi (tugun ichida bir nechta tishli narsalarni qilishingiz mumkin, ammo hozir siz bundan tashvishlanishingiz shart emas). Hodisa qo'zg'atilgan bo'lsa, dastur bo'sh vaqtida qayta ishlanishi kerak bo'lgan qo'ng'iroqlar stendida ish bor.

Ko'p yo'nalishli arxitektura, odatda harakatni kutishga to'g'ri kelganida, yangi ipni qo'zg'atadi. Shunday qilib, siz ma'lumotlar bazasiga o'tasiz va barcha kerakli vazifalarni bajaradigan va dastlabki ipni to'ldirish yoki qayta qo'shish uchun zarur bo'lgan barcha qadamlarni bajaradigan yangi ipni yaratasiz.

Ikkala usul ham turli maqsadlar uchun juda foydali. Voqealar boshqaruvi foydalanuvchi interfeyslari va serverlari uchun juda yaxshi, chunki sizning dasturingiz yangi voqea qachon paydo bo'lishini va voqealar tez-tez uchrab turishini bilmaydi. Agar muammoni ancha kichikroq qismlarga ajratmoqchi bo'lsangiz (yoki bitta ipingizning chegarasiga yaqinlashmoqchi bo'lsangiz), hisoblash tezligi yuqori bo'lgan ishlarni bajarish uchun iplar kerak bo'ladi.