Caching – פוסט העשרה
-
Caching – פוסט העשרה
##Caching##
בקיצור נמרץ: זהו רכיב תוכנה, או חומרה, שמכיל נתונים שמאוחסנים בד”כ במקום אחר, וגם נתונים מחושבים. המטרה שלו לחסוך זמן ולהגביר מהירות ביצועים כאשר יש שליפה חוזרת וחישובים חוזרים על אותם נתונים.
אז במקום לצאת כל פעם לבסיס הנתונים המרוחק
ולעבור את כל שלבי התהליך, שולפים מהמטמון שנמצא במקום
נגיש. בסרבר – המטמון יכול להימצא בזיכרון הפנימי של השירות.
בדפדפני האינטרנט – בדפדפןזוהי טכניקה מאוד בסיסית וקלה להבנה כדי להאיץ את ה performance במערכת.
Caching -הטמנה, עוזר להפחית את “latency” במערכת.
בחיי היומיום שלנו אנו משתמשים בשיטת ה Caching מבלי לשים לב.
גם אם אנחנו גרים בסמוך לסופרמרקט, אנחנו עדיין מעדיפים לאחסן מצרכים שימושיים במקרר או במזווה.
למרות שתמיד נוכל לצאת, ולקנות את הדברים האלה בכל פעם שאנחנו רוצים אוכל, זה הרבה יותר מהיר אם זה נמצא במזווה או במקרר. זה Caching!בדומה לכך, במונחי תוכנה, אם בסופו של דבר אנו מסתמכים על חלקים מסוימים של נתונים, ייתכן שנרצה לשמור את הנתונים האלה במטמון כך
שהאפליקציה שלנו תתפקד מהר יותר.זה נכון לרוב כאשר מהיר יותר לאחזר נתונים מהזיכרון ולא מהדיסק או מהstorage המרוחק בגלל ה latency בביצוע בקשות רשת, או בביצוע חוזר של חישובים / manipulations על הדאטה.
בעידן הנוכחי, זמינות – Availability נמדדת בתשיעיות.
כלומר באחוזים של 99.9 ומעלה, והשאיפה לכמה שיותר מהמספר 9
במדד.כדאי לזכור שמספרי הזמינות המסחרית מחושבים על בסיס זמינות שנתית, ולכן זמן השבתה של 0.1% (כלומר זמינות של 99.9%) הוא 8.77 שעות בשנה!
סיבה מסחרית לזמינות גבוהה היא פשוט שכל השבתה באתר תביא לכך שהאתר יאבד כסף. או למשל, כאשר השירות הוא שירות המשמש עסקים אחרים כדי להציע שירותים. אם הוא נופל, שאר החברות שצורכות אותו גם כן לא יכולות לספק את השירות שלהם.
השימוש במנגנון caching בכל נקודה או רמה שהיא במערכת, וכחלק מ design שנבנה בצורה טובה ומתאימה לדרישות של המערכת, יכול לגרום להעלאה של אחוז הזמינות שלנו.
אם זה בהפחתת העומס על השרתים, או על הדאטהבייס שלנו.
ואם זה בהורדת ה latency עקב שימוש חוזר בנתונים שנשלפו וקיימים בזיכרון הנגיש יותר מקריאה מרוחקת לאחסון או שליפה מה disk וחסכון של זמן עיבוד נתונים, כי הנתונים במטמון נשמרים לאחר העיבודים הנדרשים.למעשה אתרי אינטרנט רבים נשמרים במטמון (במיוחד אם התוכן אינו משתנה בתדירות גבוהה) ב – CDN כך שניתן להגיש אותו למשתמש הקצה הרבה יותר מהר, וזה מפחית את העומס על שרתי ה backend.
כאשר על ה backend שלך לבצע עבודה אינטנסיבית מבחינה חישובית או time consuming work –
Caching לתוצאות קודמות שממיר את ה lookup time מזמן linear O(N) לזמן constant O(1) יכול להיות יתרון מאוד.כמו כן, אם השרת שלך צריך לבצע מספר בקשות רשת וקריאות API על מנת לחבר את הנתונים שנשלחים חזרה למבקש, נתוני המטמון יכולים להפחית את מספר שיחות הרשת, ובכך את ה latency.
כמה מסקנות ברמה גבוהה ולא מחייבת. ככלל, מטמון עובד בצורה הטובה ביותר כאשר משתמשים בו לאחסון נתונים סטטיים או משתנים לעתים רחוקות, וכאשר המקור לשינוי נוטה להיות פעולה בודדת מאשר פעולות שנוצרו על ידי משתמשים.
כאשר consistency וההתעדכנות בנתונים הם קריטיים,
ייתכן שמטמון אינו מהווה פיתרון אופטימלי, אלא אם כן קיים במערכת אלמנט נוסף שמרענן ביעילות את המטמונים במרווחי זמן שאינם משפיעים לרעה על המטרה ועל חוויית המשתמש של היישום.
Log in to reply.