✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

הגיע הזמן לעשות סדר: על תזמון ג'ובים בגוגל קלאוד

|
Sep 11, 2019
alt="blogs"
title="Google"
Event
Events
alt="blogs"
alt="blogs"

מטרת הארכיטקטורה:

לבצע ג׳ובים שונים בתזמונים שונים

הארכיטקטורה


1. גוגל קלאוד scheduler מבצע קריאת http ל-api מסוים שמתפקד כ-publisher עבור Google pub/sub
2. Publisher שולח ג׳וב ל-Topic מסוים בשירות Google pub/sub.
3. קלאסטר של Kubernetes שמנוהל על ידי גוגל קלאוד, מתפקד כאוסף של subscribers עבור ה pub/sub, וכל subscriber שפנוי שולף ג׳וב ומבצע אותו.

רכיבי הארכיטקטורה


Google Scheduler


מכיוון שמטרת הארכיטקטורה זה תזמון ג׳ובים, לכן די הגיוני להשתמש בשירות שיודע לתזמן  והוא עושה את זה על ידי syntax דמוי Cron.


האלטרנטיבה בגוגל לתזמון היא שימוש בשירות appengine, יש שם אופציה לבצע תזמונים.


אך יש לזה מספר חסרונות:


א. כדי לבצע שינויים בתזמונים, צריך לעלות כל פעם קובץ cron.yaml (אין אופציה באתר).
ב. החיסרון הגדול - כל הקוד שמריץ ג׳ובים, צריך להיות פרוס באותו appengine project. זה הופך את הארכיטקטורה להרבה פחות גמישה, ולכן יהיה קשה יותר לתמוך ב-scalability יותר גדול.

נחזור ל-scheduler שלנו, ככה נראה עמוד השליטה שלו:

ככה נראה עמוד הגדרת ג׳וב חדש:

יש כמה אופציות לבצע את הג׳וב, אני השתמשתי בקריאת http.


עוד אופציה היא לשלוח ג'וב ישירות ל-pub/sub. השאלה הגדולה היא למה לא עשיתי את זה, אלא השתמשתי ב-publisher משלי?

אצלי, כל ג׳וב שמוגדר ב-scheduler זה למעשה אוסף של ג׳ובים השייכים לאותה קטגוריה, מכיוון שרציתי להקל על שליטת הג׳ובים, אז ריכזתי אותם ביחד ונתתי ל-publisher שלי לשלוח ג׳ובים ל-pub/sub.


Publisher


אפליקציית node.js express שארוזה כ-Docker Container ופרוסה ב-Google Compute Engine.
יודעת לקבל קריאות ושולחת ג׳ובים רלוונטיים ל-pub/sub topic.

מבט אל תוך ה-publisher:


Google Pub/Sub


שירות שמתפקד כ-queue של ג׳ובים, ניתן להגדיר טופיקים, לשלוח לשם ג׳ובים ולהירשם בשביל לקבל ג׳ובים משם. ג׳וב ייצא מהתור לאחר ש-subscriber ישלח על כך acknowledge.
מבט על המצב בכל topic אפשר לבצע על ידי אתר מוניטורינג של google cloud - stackdriver.

מבט על מצב התורים בעזרת stackdriver:

אם התור לא חוזר לנקודת האפס כמו בתמונה למעלה, אז אתם עושים משהו לא נכון, חלק מהבעיות שעלולות לגרום לכך:


● לא מספיק subscribers
● אין טיפול בכישלונות הרצה
● Subscribers לא מספיק טובים מבחינת - CPU, RAM וכו׳.


Google Kubernetes Engine

שירות של גוגל שיודע לפרוס קלסתרים של Kubernetes ויודע להריץ docker container image.


השירות מאוד נוח, לפי ההגדרות שלכם הוא מוסיף ומוריד nodes and pods.
אני משתמש בשירות זה להרצת subscribers שמבצעים את הג׳ובים.

מבט אל תוך ה-subscriber:



לסיכום


הארכיטקטורה הזאת מאפשרת להריץ ולשלוט בג׳ובים בצורה נוחה ויעילה, זה מאפשר כל scale אפשרי שאי פעם תדרשו אליו, מקווה שעזרתי.

 

מאת: רדי בקר מנכ״ל realcode.io, ספקית שירותי תוכנה וקלאוד

רוצים להתעדכן בתכנים נוספים הקשורים לארכיטקטורת ענן? הצטרפו לפורום המקצועי של IsraelClouds בתחום > להרשמה

מטרת הארכיטקטורה:

לבצע ג׳ובים שונים בתזמונים שונים

הארכיטקטורה


1. גוגל קלאוד scheduler מבצע קריאת http ל-api מסוים שמתפקד כ-publisher עבור Google pub/sub
2. Publisher שולח ג׳וב ל-Topic מסוים בשירות Google pub/sub.
3. קלאסטר של Kubernetes שמנוהל על ידי גוגל קלאוד, מתפקד כאוסף של subscribers עבור ה pub/sub, וכל subscriber שפנוי שולף ג׳וב ומבצע אותו.

רכיבי הארכיטקטורה


Google Scheduler


מכיוון שמטרת הארכיטקטורה זה תזמון ג׳ובים, לכן די הגיוני להשתמש בשירות שיודע לתזמן  והוא עושה את זה על ידי syntax דמוי Cron.


האלטרנטיבה בגוגל לתזמון היא שימוש בשירות appengine, יש שם אופציה לבצע תזמונים.


אך יש לזה מספר חסרונות:


א. כדי לבצע שינויים בתזמונים, צריך לעלות כל פעם קובץ cron.yaml (אין אופציה באתר).
ב. החיסרון הגדול - כל הקוד שמריץ ג׳ובים, צריך להיות פרוס באותו appengine project. זה הופך את הארכיטקטורה להרבה פחות גמישה, ולכן יהיה קשה יותר לתמוך ב-scalability יותר גדול.

נחזור ל-scheduler שלנו, ככה נראה עמוד השליטה שלו:

ככה נראה עמוד הגדרת ג׳וב חדש:

יש כמה אופציות לבצע את הג׳וב, אני השתמשתי בקריאת http.


עוד אופציה היא לשלוח ג'וב ישירות ל-pub/sub. השאלה הגדולה היא למה לא עשיתי את זה, אלא השתמשתי ב-publisher משלי?

אצלי, כל ג׳וב שמוגדר ב-scheduler זה למעשה אוסף של ג׳ובים השייכים לאותה קטגוריה, מכיוון שרציתי להקל על שליטת הג׳ובים, אז ריכזתי אותם ביחד ונתתי ל-publisher שלי לשלוח ג׳ובים ל-pub/sub.


Publisher


אפליקציית node.js express שארוזה כ-Docker Container ופרוסה ב-Google Compute Engine.
יודעת לקבל קריאות ושולחת ג׳ובים רלוונטיים ל-pub/sub topic.

מבט אל תוך ה-publisher:


Google Pub/Sub


שירות שמתפקד כ-queue של ג׳ובים, ניתן להגדיר טופיקים, לשלוח לשם ג׳ובים ולהירשם בשביל לקבל ג׳ובים משם. ג׳וב ייצא מהתור לאחר ש-subscriber ישלח על כך acknowledge.
מבט על המצב בכל topic אפשר לבצע על ידי אתר מוניטורינג של google cloud - stackdriver.

מבט על מצב התורים בעזרת stackdriver:

אם התור לא חוזר לנקודת האפס כמו בתמונה למעלה, אז אתם עושים משהו לא נכון, חלק מהבעיות שעלולות לגרום לכך:


● לא מספיק subscribers
● אין טיפול בכישלונות הרצה
● Subscribers לא מספיק טובים מבחינת - CPU, RAM וכו׳.


Google Kubernetes Engine

שירות של גוגל שיודע לפרוס קלסתרים של Kubernetes ויודע להריץ docker container image.


השירות מאוד נוח, לפי ההגדרות שלכם הוא מוסיף ומוריד nodes and pods.
אני משתמש בשירות זה להרצת subscribers שמבצעים את הג׳ובים.

מבט אל תוך ה-subscriber:



לסיכום


הארכיטקטורה הזאת מאפשרת להריץ ולשלוט בג׳ובים בצורה נוחה ויעילה, זה מאפשר כל scale אפשרי שאי פעם תדרשו אליו, מקווה שעזרתי.

 

מאת: רדי בקר מנכ״ל realcode.io, ספקית שירותי תוכנה וקלאוד

רוצים להתעדכן בתכנים נוספים הקשורים לארכיטקטורת ענן? הצטרפו לפורום המקצועי של IsraelClouds בתחום > להרשמה

לפרטים נוספים ויצירת קשר עם נציג אורקל

תודה הודעתך התקבלה

הודעתך לא התקבלה - נסה שוב מאוחר יותר

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות