نود جی اس چیست؟
بلاگ آکادمی لرن فایلز
بلاگ آکادمی لرن فایلز
در این مقاله قصد داریم به معرفی نود جی اس (node .js) ، مقایسه Node js با php، عملکرد npde js در مقابل php ، عملکرد در کامپایل کردن(Compile) کد، عملکرد بهینه سمت سرور، نتایج بررسی بر اساس درخواست های ساده HTTP، نصب نود جی اس و … بپردازیم.
node.js یک محیط برای اجرای جاوا اسکریپت (JavaScript) است. محیط اجرایی نود (node) شامل تمامی چیزهایی است که شما برای اجرای برنامه هایی که در جاوااسکریپت نوشته اید، به آن ها نیاز دارید. در گذشته زمانی که توسعه دهندگان اصلی جاوااسکریپت سعی داشتند تا این زبان را که آن زمان تنها در مرورگر قابل اجرا بود توسعه دهند تا بتوانید آن را به صورت مستقل بر روی سیستم عامل داشته باشید، node.js چشم به جهان گشود. در حال حاضر شما می توانید علاوه بر طراحی وب سایت های تعاملی، کارهای بسیار بیشتری را انجام دهید. اکنون جاوااسکریپت می تواند کارهایی که در زبان های دیگر مانند پایتون قابل اجراست را انجام دهد.
مرورگر جاوا اسکریپت و node.js هر دو بر روی Runtime Engine جاوااسکریپت V8 اجرا می شوند. این ENGINE کدهای جاوااسکریپت شما را دریافت کرده و به زبان ماشینی سریعتری تبدیل می کند. زبان ماشینی، پایین ترین سطح زبان است که کامپیوتر آن را بدون واسطه می فهمد.
ابتدا در برنامه نویسی سمت سرور، PHP حرف اول را می زد، آن زمان جاوااسکریپت مجبور بود دوشادوش PHP کار کند، زیرا تنها PHP بود که می توانست از پس تمامی کارهای سمت سرور بین پورت شماره ۸۰ و دیتابیس(MySQL) بر بیاید و جاوااسکریپت تنها بخش قابل دیدن و حس کردن کار را برعهده داشت که این بخش کوچک برروی یک مرورگر وب انجام می شد.
اغلب CMS های محبوب برای تبادلات سروری شان بسیار وابسته به PHP بودند، اما با پیدایش فریم ورک Node.js در سال ۲۰۰۹(توسط Ryan dahl) مسیر داستان عوض شد. نود جی اس و پی اچ پی که در گذشته دوستان خوبی بودند کم کم تبدیل به رقبایی برای هم شدند که برای کسب برتری و بقا در میدان نبرد، وارد جنگ شدند. درحال حاضر هردو رقیب برای بدست آوردن تاج و تخت مبارزه می کنند تا پیروز این نبرد ذهنیت توسعه دهنده ها را از آن خود کند. یکی کهنه ابرقهرمانی ست که با خود کوله باری از تجربه دارد و دیگری سوپراستار درخشانی ست که هردو ویژگی سرعت و مزیت های عالی را در خود دارد.
حالا بیایید این دو غول دنیای برنامه نویسی را در برابر هم قرار داده و بر اساس عملکردشان آن ها را بررسی کنیم تا برنده مشخص شود.
انتخاب پی اچ پی یا نود جی اس بسته به تصمیمی دارد که بر اساس نیاز اپلیکیشن یا وب سایت اتخاذ می شود. اگر تبادل اطلاعات زیاد و سنگین در میان باشد و می خواهید چندین ارتباط همزمان را در کوتاه ترین زمان ممکن در طرف اپلیکیشن مصرف کننده پشتیبانی کنید، در این صورت بهتر است سراغ نود جی اس بروید. با اینکه در فریم ورک های پی اچ پی امکان ارتقاء در جهت پشتیبانی از چند ارتباط همزمان وجود دارد اما با تمام این اوصاف نود جی اس به وضوح برنده ی این بخش است. Node.js با شالوده ی رویداد محور none-blocking خود در نوشتن برنامه های همزمان با تمام قوا به شما کمک می کند.
بر اساس گزارشاتی که از مبانی توسعه پذیری زیربنای بک اند در نسخه ی موبایلی لینکدین(LinkedIn) منتشر شده ست:
زمانی که کمپانی از ROR به Node.js کوچ کرد در نهایت توانست تعداد سرورهایش را از ۳۰ عدد به سه عدد کاهش دهد و فضای ده برابر نیازشان برای بهره برداری از منابع موجودشان را در اختیار بگیرند. حرف های زیادی پشت PayPal است زمانی که بخاطر یک پلتفرم اپلیکیشن از جاوا به نود جی اس کوچ کرد. اپلیکیشن نود جی اس تقریبا دوبرابر زودتر و با نیروی کمتر ساخته شد، همچنین ۳۳درصد کد نویسی کمتر و با ۴۰درصد فایل کمتر.
کمپانی پی اچ پی Zend، از یک استراتژی کمپایل کردن تفسیری منحصر به فرد استفاده می کند که در آن کدهای بهینه ی کمتری به نسبت زمانیکه تنها کدها به حالت JIT(در لحظه) اجرا شوند استفاده می شود و تمامی این عملکرد فوق العاده اش را مدیون نود جی اس است زیرا این کمپانی از موتور V8جاوااسکریپت برای کامپایل کردن در لحظه استفاده می کند که البته منجر به افزایش زمان بالا آمدن نود جی اس هم می شود.
نود جی اس از استراتژی کامپایل کردن در لحظه با موتور V8 جاوا اسکریپت استفاده می کند. این استراتژی زبان های نوشتاری داینامیک را بهبود می بخشد اما کمی زمان بالا آمدنشان را افزایش می دهد. در این بخش PHP با اجرا کننده های متن باز HHVM و HACK پا به میدان رقابت پایاپایی با نود جی اس می گذارد. به این صورت که مثلا HHVM از استراتژی کامپایل در لحظه(JIT) استفاده می کند تا به عملکرد بهتری دست پیدا کند.
همانطور که قبلا گفته شد نود جی اس در اجرای چندین دستور همزمان عملکرد فوق العاده ای دارد،
این قابلیت از آنجا نشئت می گیرد که نود جی اس از یک چرخه ی رویداد محور none-blocking استفاده می کند(تکنولوژی تک رشته ای)، حال اگر Node.js را در قیاس با اجراکننده زِند(Zend) PHP که از یک پروسه بلاکینگ استفاده می کند قرار دهیم، متوجه می شویم که پی اچ پی با توجه به این محدودیت می بایست از تکنولوژی چند رشته ای برای پاسخگویی به درخواست سرویس های تحت وب استفاده کند. اگر از سمت کاربر درخواست سنگینی تقاضا شود و به طور همزمان چندین درخواست ارتباط قرار گیرد، بعلت وجود تعلل در پاسخگویی HTTP به بخش کاربران وب یا اپلیکیشن، احتمال اینکه سرور نتواند جوابگوی آدرس دهی به درخواست ها باشد وجود دارد.
سرورهای تحت وب نظیر APACHE و NGINX راه هایی برای کمی بهبود عملکرد چند کاره ی پی اچ پی دارند، اما خب در نهایت این ها یک زبان مستقل نیستند و برای پشتیبانی چند کار انجامی با محدودیت هایی مواجهند. پروژه ی HHVM فیسبوک(Facebook) در سال ۲۰۱۴ منتشر شد که سعی داشت این محدودیت را از سر راه PHP بر دارد.
بسیاری از مردم گاها عملکرد نود جی اس و پی اچ پی و HHVM را براساس مولفه های پایین بررسی می کنند:
۱- ارتباط HTTP
۲- کار Http و CPU
۳- سنجش دقیق CPU به روش CombSort
براساس سایت : www.hostingadvice.com نتایج لیست شده ی پایین بدست آمده است:
در سنجش “Hello world” کنترل شده با HTTP از Zend PHP ورژن ۵.۶.۶ با فعال بودن گزینه ی OPache
سنجش بوسیله ی Apache ab benchmarking tool انجام شد.
عملکرد Zend PHP کمتر از نصف Node.js بود.
عملکرد HHVM تقریبا ۷۴درصد بهتر از Zend PHP بود.
عملکرد HHVM خیلی نزدیک به Node.js بود اما نود جی اس تقریبا ۱۷درصد سریعتر بود.
زمانی که ورد پرس با HHVM استفاده شد تقریبا ۴۷درصد عملکرد افزایش پیدا کرد.
در ادامه این لینک
http://kokizzu.blogspot.be/2015/02/numeric-combsort-benchmark-updated.html
نتیجه ی آزمایش محض CPU است.
نتایج بررسی:
HHVM تقریبا هفت بار سریعتر از PHP تنهاست، اما نود جی اس پنج بار سریعتر از HHVM در این آزمایش بود. براساس میزان استفاده از رم، HHVM بسیار کارا تر از PHP تنهاست، اما نود جی اس به مراتب بهتر از هردوی آنهاست.
در زیر برخی از موقعیت هایی که نود جی اس خودش را به عنوان پلتفرم اول معرفی میکند آمده است:
برای این کار کافی است که وارد سایت www.nodejs.org شده و نسخه ای از نود جی اس که مناسب سیستم عامل تان هست را دانلود نمایید. توجه داشته باشید که نسخه ی مناسب سیستم عامل شما زمانی که بر روی آیکون install در سایت نود جی اس کلیک کنید به شما نمایش داده می شود. بعد از اتمام دانلود و نصب آن، فقط کافیست وارد محیط Node.js شده و کدنویسی تان را آغاز کنید.
بسیار عالی و کامل
سلام و درود.
خوشحالیم که باعث رضایتتون بوده.
ممنون از انرژی و همراهیتون.پیروز باشید 🙂
هنوز در مونده نود جی اس چقدر قوی کار کرده شرکت از ۳۰ تا سرور ۳ سرور استفاده لایک داره
امسال (۲۰۱۹) جاوااسکریپت برای هقنمین سال پیاپی بهتر زبان در سایت stackoverflow شد لایک جاواسکریپت
ممنون مقاله خوبی گذاشتید
سلام بر شما
خواهش میکنم ، ممنونم بابت ارسال نظرتون .
موفق و پیروز باشید