מערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים
-
@google3 כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
וכן בניתי כל דבר שאין אף "דבר אחד" שיכול להוריד המערכת ( "Single Points of Failure")
בעבודה עם CSV אתה עלול לגרום למצב שזה יהיה הדבר שיוריד את המערכת הרבה לפני שאיזה חוות שרתים עולה באש או שמישהו חתך בטעות את הכבל רשת לא חושב שזה בריא אם יהיה לך קובץ עם עשרות אלפי רשומות ומאות כתיבות בשניה (לא תרחיש ביזארי, תחשוב מישהו יחליט שבונה על המערכת שלך מערכת מכירת כרטיסים למירון)
גם אם לא יהיה שום צוואר בקבוק בכתיבה לקובץ המשתמש יקבל קובץ ענק להורדה בלי אפשרות לסינון פשוט של רשומות 0-1000 וכדו'
וזה עוד לפני שתרצה להוסיף פיצ'ר פשוט של תנאי שמשתמש לא יכול להרשם פעמיים ואז אתה צריך לעבור על כל השורות ולבדוק האם הרשומה קיימת או לא (במסד נתונים יש קיצורי דרך ולא קוראים מהדיסק את כל השורות בכל קריאה)
אני יודע שזה מגניב שיש לך מערכת שאין בה SPOF אבל לא תמיד זה שווה את המאמץ, וכנראה אף פעם לא תגיע ל100% כי גם אם תקים 2 שרתי קמיליו בחוות שרתים נפרדות הספק שלך יכול ליפול ולא יהיה מי שיעביר לך את השיחות....
-
@nigun כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
אני יודע שזה מגניב שיש לך מערכת שאין בה SPOF אבל לא תמיד זה שווה את המאמץ, וכנראה אף פעם לא תגיע ל100% כי גם אם תקים 2 שרתי קמיליו בחוות שרתים נפרדות הספק שלך יכול ליפול ולא יהיה מי שיעביר לך את השיחות....
צריך לעשות כל מה שאפשר וזה מה שאני עושה, ויכול להעיד על זה מי שמשתמש בשרתים שלי.
אולי אני קצת מגזים בגלל שאני מגיע מטראומה ממערכת שהייתה עד עכשיו שהיו בה בעיות כל יום עם לקוחות שלא יכולים למחול לי עד היום (עם הפסד ענק).
אבל עדיין יש לי 2 שרתי קמיליו, 2 שרתי פריסוויץ' וכדומה.
וגם אני בטוח 101 אחוז שהספק גם עובד בשיטה כזו שלא יהיה Single Points of Failureעכשיו הנושא של הרשמה לא נורא עם זה נפל לכמה דקות ואם היה בעיה אפשר לתקן, וזה שונה משיחות והשמעת קבצים שזה צריך לעבוד 100 אחוז ואם יש דקה של בעיה אני כבר בבעיה (ברוך השם יש לי יותר מ-150 שיחות לדקה ומליון + שיחות לשבוע).
אבל כבר בניתי את המערכת שלי דרך קבצים ולא עם DB חוץ מ-CDR ובוקמרקס שכן עובדים עם DB, ולכן הכי טוב אם אפשר לעשות גם הרשמה עם קובץ וכמו שאני כותב כבר למעלה, שעם מערכת קבצים יש המון פונקציות שאני לא צריך לעשות ומגיע ממילא ואחד מזה הוא שאין לי בכלל Front End (אני הולך לעשות, אבל עד שאני עושה המערכת מוכן כבר להשתמש במערכת).
זו תמונה מקמיליו אחד ורק שיחות נכנסות.
אגב מה שמעניין הוא שספק השרתים שאני משתמש בו, Hetzner, הפסיק לעבוד האינטרנט למקומות מסוימים לכמה שעות בגלל כבל אינטרנט שנחתך קישור אז כמו @nigun אומר אי אפשר להיות 100 אחוז SPOF אבל עדיין צריל לעשות מצידנו מה שאפשר
-
@dovid כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
אז תן לעצמך סטירה בשמי... תפסיק עם התירוצים.
קודם כל נתתי!
אני באמת כבר אחר בירור דברתי עם המון אנשים בנושא וכן בכל נושא במערכת כולל @nigun ובתכם כמה שיש להם מערכת פעיל וגם אני יש לי כמה מערכת פעילות אז יש לי קצת נסיון (אכן גם שיניתי את דעתי אחרי בירור כאן בפורום)
@dovid כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
וגם תרשה לי לקבוע - אין שמה שום כשלים בדרך הטבע
אכן אתה צודק מסד נתונים בעצמו אין כמעט כשלים בנושא מסד נתונים בעצמו העניין הוא כמה
א) כשאתה עושה מערכת קבצים יש לך אוטומטית הרבה דברים, כמו צד לקוח שאפשר לפתוח שלוחות באמצעות פתיחת תיקייה. אפשר להעתיק ולגזור, למחוק, אפשר לשתף הרשאות עם אנשים אחרים לתיקייה וכד וכד
ב) אם כל המערכת שלך היא על מסד נתונים יש פה עניין של עומס (כמובן שאפשר הכל לסדר, אני רק אומר הפרו והקאנס)
ג) אתה פתוח את אצמך לבעיות בגלל כל דבר יש פה 2 דברים 1 לסדר המסד נתנים 2 ההקלטה אצמו - כשאתה מוחק אתה צריך למחוק גם את הקובץ במסד נתונים וגם את ההקלטה עצמה. אותו דבר לכל פעולה, ואם יש עומס מתחילה שרשרת של בעיות (כמובן גם את זה אפשר לסדר, אני רק אומר הפרו והקאנס)
@dovid כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
ההצעה של הCSV לא מחייבת front-end. כמו שיש לינק לדרייב או הדומה לו, ימשיך להיות לינק ישיר לCSV שלא באמת קיים, PHP יטפל בניתוב הזה ויחזיר CSV עדכני מהמסד בכל בקשה. אם אתה מתכוון שהשרתים לא חשופים בכלל לרשת, אוקי, גם עוד לא התקנת מסד נתונים. שלוש צעדים נותרו
אני מצרף תמונה מהמערכת שלי שאני (מערכת הקבצים) תלמדו לי איך אני יכול לעשות פה PHP פשוט (חוץ עם אני לומד הקוד של Next clued ואני עושה דף חדש ששם יש כל הרשמות ולעשות שאפשר למחוק ולשנות ההרשמה קיים אני לא אומר שזה לא אפשרי אבל זהנ לא כמה שירות קוד לדעתי)
-
@google3 ניסינו לשנות את דעתך בלי הרבה הצלחה
אז בוא נוותר על זה, ונחזור לשאלה המקוריתתוכל לפרט יותר בדיוק את השאלה?
האם אתה חייב לשמור הכל בקובץ אחד גדול? אולי אפשר שכל סשן מקביל יפתח קובץ חדש?
איך הדיסק מחובר לשרת? אם דרך NFS, האם אין שם נעילה של קבצים? (אני לא בקי בזה, והתעצלתי לחפש, אבל נדמה לי שיש) -
@google3 אולי אתה יכול לשמור לDB ואחת לX זמן לייצא את כל הCSV שהיו להם תוספות בX הזמן שחלף לתיקיות הרלוונטיות?
כמובן שזה ידרוש ממך CRON מסויים, אבל יש מצב שעד שעד שיהיה מוכן הממשק משתמש תהנה מ2 העולמות, ואח"כ המעבר יהיה חלק יותר.
בנוסף, יש מצב שבPHP אם אתה משתמש בהוספת בלבד לקובץ הוא כן יתמודד עם זה עד גודל מסויים (באותו שרת כנראה שבוודאי. אתה שאלת על 2 שרתים....)file_put_contents($filename, $data . PHP_EOL, FILE_APPEND);
אז אולי אתה יכול לכתוב ל2 קבצים כל שרת עם מזהה נפרד (לדוגמא עם סיומת 1/2) ולעשות שילוב בין הקבצים פעם בכמה זמן.
(לדעתי האישית במקרה שלך אם אתה מכוון לעומסים וסקייל גבוה - תחזור לDB כמו שהציעו כאן)
-
@clickone כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
כמובן שזה ידרוש ממך CRON מסויים
הוא לא חייב לעבוד עם cron
אפשר לשמור הכל בDB ואחרי כל רישום בDB לפנות לשירות נפרד ולהפעיל טריגר ליצירת CSV והשירות הזה ינהל את כל התור והבקשות המקבילות
אחרת אם יש לו אלפי קבצים בשרת יהיה לו אלפי cron jobs שרצים בלי סיבה -
@yossiz כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
@google3 ניסינו לשנות את דעתך בלי הרבה הצלחה
אז בוא נוותר על זה, ונחזור לשאלה המקוריתתוכל לפרט יותר בדיוק את השאלה?
האם אתה חייב לשמור הכל בקובץ אחד גדול? אולי אפשר שכל סשן מקביל יפתח קובץ חדש?
איך הדיסק מחובר לשרת? אם דרך NFS, האם אין שם נעילה של קבצים? (אני לא בקי בזה, והתעצלתי לחפש, אבל נדמה לי שיש)אני רוצה לעשות כמו שיש במערכת בימות המשיח "הקלטת נתונים" וכל הקלטת נתונים תהיה בתוך השלוחה בקובץ
זו רק דוגמה אחד אני גם רוצה לעשות כמו שיש בימות המשיח (וכן מערכת אחרת) List_all_information שבה יהיה כל המידע על המאזינים: השם, מספר טלפון, מייל, סיסמה וכדומה, וכמה פעמים היו במערכת. לדוגמה, ה-CDR ייקח ממנו מידע וכדומהאת ה-List_all_information, בגלל שזה פעם אחת במערכת, אני יכול יותר לעשות במסד נתונים מה שאין כן כל השאר - אם אני יכול לעשות בקובץ, יהיה לי עדיף מהרבה סיבות
-
@nigun כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
@clickone כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
כמובן שזה ידרוש ממך CRON מסויים
הוא לא חייב לעבוד עם cron
אפשר לשמור הכל בDB ואחרי כל רישום בDB לפנות לשירות נפרד ולהפעיל טריגר ליצירת CSV והשירות הזה ינהל את כל התור והבקשות המקבילות
אחרת אם יש לו אלפי קבצים בשרת יהיה לו אלפי cron jobs שרצים בלי סיבהמה עם קורה הפוך הלקוח עולה קובץ? אז לכראה אין ברירה אלא לעשות cron job?
-
@google3 כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
@nigun כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
@clickone כתב במערכת טלפנית- התמודדות עם הרשמות ל CSV מכמה שרתים:
כמובן שזה ידרוש ממך CRON מסויים
הוא לא חייב לעבוד עם cron
אפשר לשמור הכל בDB ואחרי כל רישום בDB לפנות לשירות נפרד ולהפעיל טריגר ליצירת CSV והשירות הזה ינהל את כל התור והבקשות המקבילות
אחרת אם יש לו אלפי קבצים בשרת יהיה לו אלפי cron jobs שרצים בלי סיבהמה עם קורה הפוך הלקוח עולה קובץ? אז לכראה אין ברירה אלא לעשות cron job?
מחיפוש מהיר נראה שיש שם אופציה של הפעלת טריגרים
https://docs.nextcloud.com/server/latest/developer_manual/digging_deeper/flow.html#configuration-component