How Node js Works


Download 0.61 Mb.
Sana11.09.2023
Hajmi0.61 Mb.
#1675566
Bog'liq
How node works

How Node.js Works

V8 and libuv

Non-blocking model

Node.js scalability

Thread & Thread Pool

How requiring modules work ?

Architecture

V8 Javascript Engine – bu biz yozgan JS code ni mashina ya`ni kompyuter tushunadigan xolatga o`girib beradi

Libuv – bu open source kutubxona hisoblanib async I/O operation larga ma`sul va file system, networking kabi boshqa ishlarga ham ushbu kutubxona javobgar. Bundan tashqari libuv Node.js dagi asosiy qurollardan bo`lgan Thread Pool va Event Loop ni ishlatib beradi.

Node.js shuningdek http-parser, zlib, c-areas, openSSL kabi kutubxonalarni ham kapot ostida ishlatib beradi lekin asosiy kurubxonalar bu V8 va libuv hisoblanishadi.

I/O operations

I/O operations – bu dasturning tizimda joylashgan diskka yoki networkka aralashuvi bo`ladigan ish jarayonlariga aytiladi. Masalan fs module biror bir faylni o`qishi yoki yozishi ham tizimdagi qaysidir faylga murojaat sifatida hisoblansa bo`ladi.

Non-blocking I/O operations

Bu turdagi I/O operatsiyalar hech qanaqa kuttirishlarsiz yani dastur ishlashini to`xtatmasdan qaysidir jarayon bo`ladigan paytda sodir bo`lib yakunlanadigan operatsiyalar hisoblanishadi.

Non-blocking vs blocking performance

Why node.js scalable ?

Odatiy ( Traditional web serving tecnhiques ) ga qaraganda Node.js single thread ni o`zida bir vaqtda bo`ladigan judayam ko`p ulanma ( connection ) larni handle qila oladi. Odatiy web server lar ko`pincha har bir ulanma uchun alohida thread yaratishadi, agarda thread lar bo`sh bo`lmaydigan bo`lsa qaysidir thread bo`shashini kutib turishadi.

Kichik hisob kitob =))

Odatiy web serverlarda ( Traditional ): Agarda har bir thread miz 2mb xotiraga ega bo`lib tursa va RAM xotiramiz 8gb bo`ladigan bo`lsa, bizning dasturga ulanishlar soni 4,000 ta gacha yetishi mumkin.

Node.js: Huddi shu xotiraga ega serverimizda biz 1 million ta gacha bir vaqtni o`zida bo`ladigan ulanishlar ga erisha olamiz va 600 ming ta websocket ulanmalariga ham hizmat ko`rsata olamiz.

Thread & Thread Pool

Thread – bu deqqoncha qilib aytadigan bo`lsak ishchi va unga bo`ladigan barcha ulanmalarga va o`sha ulanmalarni ishi bajarilishiga ma`sul xisoblanadi. Node.js da esa single-thread ya`ni bitta ishchi.

Quyidagi jarayon bizning thread imiz ishga tushgan paytda yuz beradigan jarayonlar hisoblanadi

E`tibor beradigan bo`lsak main thread imiz event loop tomonidan ishga tushiriladi, lekin bizda judayam katta hisob-kitobga ega bo`ladigan task lar kelib qoladigan bo`lsa main-thread muammoga duch kelishi mumkin va ana shu jarayonda bizga Thread Pool kerak bo`ladi. Crytography, File System API s kabi katta ishlarni qo`shimcha thread ochish yordamida amalga oshiriladi.

E`tibor beradigan bo`lsak main thread imiz event loop tomonidan ishga tushiriladi, lekin bizda judayam katta hisob-kitobga ega bo`ladigan task lar kelib qoladigan bo`lsa main-thread muammoga duch kelishi mumkin va ana shu jarayonda bizga Thread Pool kerak bo`ladi. Crytography, File System API s kabi katta ishlarni qo`shimcha thread ochish yordamida amalga oshiriladi.

Requiring modules

Resolving

Modullar Node.js da asosan 3ga bo`linadi:

  • Core modules
  • Developer Modules
  • 3rd-party modules

Wrapping

Bu jarayonda Node bizning kodimizni maxsus IIFE functionga o`rab beradi va biz require qayerdan keldi o`zidan o`zi degan savolga shu yo`l orqali javob topa olishimiz mumkin

Execution – bu code ning ishga tushirilishi.

Execution – bu code ning ishga tushirilishi.

Returning exports – bu chaqirilgan modulelarning code ni biz chaqirayotgan module ga chaqirib olamiz)).

Caching – bu agar biz chaqirilgan module ni yana chaqiradigan bo`lsak node boshqatdan require qilmaydi balki allaqachon execute qilingan module dan foydalanadi.


Download 0.61 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling