ABA


"שאלה לגבי NodeJS ופעולות עיבוד כבדות"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #22373 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 22373
כמה עוד לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.11.09
263 הודעות, 11 פידבק, 19 נקודות
   20:06   19.01.20   
אל הפורום  
  שאלה לגבי NodeJS ופעולות עיבוד כבדות  
 
   ערכתי לאחרונה בתאריך 19.01.20 בשעה 20:20 בברכה, כמה עוד
 
שאלה שמעניינת אותי לגבי NodeJS.

אומרים שNode היא פלטפורמה פחות טובה לפיתוח צד שרת כשצריך להתעסק עם פעולות כבדות. כמו לדוגמא עיבוד/הקטנת תמונה.
אני מבין שה- event loop מנוהל על ידי thread אחד.
אבל בפועל אני שולח פעולה בצורת async, ואת הפעולה מבצעת ספרייה שהיא כן multi threaded וכתובה לצורך פעולה מקבילית. אז איפה פה הבעיה?

תודה אלון
מקווה שהייתי ברור


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה צודק, CaTz 22.01.20 00:03 1
  אין בעיה. במערכת טובה אתה תשלח פעולות כבדות לשרת פייתון או java inno3D 22.01.20 01:53 2
  זאת טעות מאד נפוצה. הרבה אנשים חושבים ש NODE הוא SINGLE THREADED arielvol  21.02.20 22:00 3

       
CaTz
חבר מתאריך 2.10.04
14561 הודעות, דרג אמינות חבר זה
   00:03   22.01.20   
אל הפורום  
  1. אתה צודק,  
בתגובה להודעה מספר 0
 
   אין בעיה עם פעולה אסינכרונית, הרי שהיא נכנסת לתור, ומפנה את הevent loop לבצע משימה הבאה.

הבעיה מתחילה כשאתה עושה פעולה כבדה בתוך הה event loop. כיוון שנוד הוא עם thread יחיד, זה תוקע אותו ולא מאפשר לשרת שלך לטפל בבקשות נוספות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4536 הודעות, דרג אמינות חבר זה
   01:53   22.01.20   
אל הפורום  
  2. אין בעיה. במערכת טובה אתה תשלח פעולות כבדות לשרת פייתון או java  
בתגובה להודעה מספר 0
 
   והתשובה תחזור אסינכרונית


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
arielvol 
חבר מתאריך 18.3.02
864 הודעות, דרג אמינות חבר זה
   22:00   21.02.20   
אל הפורום  
  3. זאת טעות מאד נפוצה. הרבה אנשים חושבים ש NODE הוא SINGLE THREADED  
בתגובה להודעה מספר 0
 
   אבל הוא ממש לא.
קצת קריאה מעמיקה ואתה מבין שבעצם הוא ממש לא SINGLE THREADED.
NODE JS בנוי מתחת ל"מנוע" עם V8 שהEVENT LOOP שלו הוא באמת SINGLE THREADED
אבל הוא גם מורכב מספריית C\C++ בשם LIBUV שהיא למעשה בהחלט MULTI THREADED.
הרבה מהפעולות שאנחנו עושים ב NODE , כגון פעולות אסיכרוניות לרשת הן מועברות לספריית LIBUV שלמעשה מטפלת בהן ב THREAD אחר.

הבעיה שהעיקרית היא שאם אתה מנסה לעשות (כמו שנאמר פה מעל) פעולה שצורך זמן CPU מתוך ה EVENT LOOP , אז אתה בבעיה כי אתה תוקע את כל NODE JS.
כמובן יש לזה פתרונות שונים כמו WORKERS ועוד..

תחפור קצת באינטרנט אני בטוח שתמצא ים מידע :-)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net