בעניין איתחול ועדכון שרת HTTP
-
אני מתאר לעצמי שזו בעיה נפוצה:
עשינו שינוי קטן בשרת http. נניח ב nodeJs
איך עושים שהשינויים יחולו? האם להפעיל מחדש את השרת?
מה עם כל הסשנים?
אני מניח שעם הסשנים ספציפית אפשר להסתדר (לשמור אותם במסד נתונים). אבל מה עם כל הפעולות שהמשתמש באמצע לעשות, כגון העלאת/הורדת קובץ. פעולות חשובות אחרות, כגון סליקת אשראי וכדו'.
האם יש אפשרות שכל שינוי שנעשה ישתקף מיידית? (נניח שינינו פונקציה, פעם הבאה שהיא תיקרא תעלה הפונקציה החדשה).
אני בעיקר מתמקד בnodeJs, אבל מעניין אותי תיאורטית בכל שרת.
(זכור לי שב C9 כל שינוי משתקף מיידית.)
אני לא מדבר על כלים כמו forever שפשוט מפעילים מחדש את השרת. -
למיטב ידעתי שינוי בקוד של צד השרת מחייב ריסטרט הן בנוד והן בדוטנט (דוקא בPHP לא צריך).
גם אם אפשר תיאורטית להתגבר על זה זה אומר קוד לא יעיל ומסובך לחינם.
.
ייתכן שהשינוי שההוא עשה היה בקבצים סטטיים.
או שאתה לא הבנת והוא כן עשה ריסטרט (זה לוקח שניה, וזה נעשה אוטומטית במידה וזה נעשה ע"י WebDeploy, אבל העלאות ייתקעו למיטב ידעתי). -
בPHP זה מיידי.
בשאר בד"כ צריך ריסטארט.בדוטנט זה מתחלק ל2.
- אם זה פרוייקט מסוג website אז בשנייה ששמרת /החלפת את הקובץ בחדש, הקריאה הבאה לדף תביא את הקוד המעודכן ולא צריך לעשות כלום (@מנצפך זה כנראה מה שראית בעיניים)
- אם זה פרוייקט מסוג פרוייקט, שם אם עשית שינוי בקוד, אז הוא צריך build מחדש וזה עושה סוג של ריסטארט לשרת (אין צורך לעשות ריסטארט בIIS - הפרוייקט פשוט מתאפס)
גם בפרוייקט הזה, שינויים בקבצי ASPX או cshtml/vbhtml יחולו מיד עם השמירה או ההחלפה שלהם.
-
@מנצפך אמר בבעניין איתחול ועדכון שרת HTTP:
ב C9 זה לא חל מיד? זכור לי שכן.
C9 זה IDE.
תלוי מה אתה מפתח. -
אפשר לעשות שייטען אוטומטית, אבל זה מפעיל שוב את כל האפליקציה.
הטבע של nodejs זה כמה קטעי קוד קצרים שרצים מיידית ומחכים לבקשות. שינוי בקטע הקוד שכבר רץ בטח שמחייב טעינה חוזרת, אלא"כ יכינו בתוך האפליקציה עצמה wathc לתיקיה, ויטענו את הקוד דינמית. זה אפשרי לגמרי ומיותר לגמרי. -
-
-
-
@מנצפך אמר בבעניין איתחול ועדכון שרת HTTP:
@dovid @אהרן
אני מבין שזה רק דואג לעניין הסשנים. לא עוזר לשאר העניינים (כמו העלאת קבצים או עיסקאות באמצע פעולה).
נכון?יש לך טעות בסיסית מתחילת השרשור. שסנים, בכל מקרה מוגנים, והם יהיו בדיוק איפה שהשארת אותם, אוקי? אלא"כ עשית MemoryStore שרק אז יש לך בעיה.
"עסקאות באמצע" זה מחולק לשתיים. הצד לקוח שהוא באמצע זה פשוט שסנים. אז אתה מכוסה. הבעיה זה צד שרת, אם למשל אתה כותב לDB שבוצע תשלום, ומחכה לקאלבק בשביל לעשות פעולה נוספת, אני לא חושב שיש דרך בעולם למנוע כשל בשלב הזה.
במערכות גדולות כנראה שמים פילטר כללי, שבמצב פיתוח עוצר את כל הבקשות. ואז לאחר דקה אפשר להיות בטוחים שאפשר לעשות ריסטרט תוך שמירת שסנים כמובן.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות