1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: אני תומאס Carriero. 3 00:00:01,950 --> 00:00:03,640 אני מהנדס תוכנה בDropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX Allain: אני אלכס Allain. 5 00:00:05,250 --> 00:00:08,200 אני מהנדס כאן בDropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: כן, הייתי למעשה TF הראש הראשון לCS50 7 00:00:11,320 --> 00:00:13,660 כאשר דוד מלין השתלט על הכיתה. 8 00:00:13,660 --> 00:00:17,010 אני כבר מלמד CS50 לשני סמסטרים 9 00:00:17,010 --> 00:00:20,700 עם מייק סמית, שהייתה הפרופסור לפני שם. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: אז אני בעצם לא לקחת CS50, אבל עשיתי TF אותו פעמיים. 11 00:00:25,310 --> 00:00:29,050 פעם אחת כTF רגיל, ולאחר מכן שנת הלימודים האחרונה 12 00:00:29,050 --> 00:00:32,520 למעשה הייתי TF ראש CS50, שהיה הרבה כיף. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: אז כאשר דוד הושיט את ידו 14 00:00:34,270 --> 00:00:38,647 איתי על הגדרה Dropbox במכשיר CS50, 15 00:00:38,647 --> 00:00:41,230 אני ממש התרגשתי, כי למעשה יש לנו לקוח לינוקס, 16 00:00:41,230 --> 00:00:46,270 ולכן רוב המשתמשים שלנו להשתמש באחת Windows או Macintosh הלקוחות, 17 00:00:46,270 --> 00:00:50,940 אבל לינוקס, מקינטוש, ו-Windows לקוחות בכל הם למעשה מאוד דומים. 18 00:00:50,940 --> 00:00:55,590 >> אז מה שעשינו זה שמותקנים מראש לקוח Dropbox לינוקס בCS50 19 00:00:55,590 --> 00:00:59,990 מכשיר, והוא פועל בדיוק כמו כל משתמש לינוקס האחר שלנו. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: אז דרך Dropbox עובד זה 21 00:01:02,210 --> 00:01:08,590 ריצות כלקוח על רבים ושונה מערכות הפעלה והתקנים. 22 00:01:08,590 --> 00:01:11,387 לקוח שולחן העבודה Dropbox הוא אחד הידוע ביותר, 23 00:01:11,387 --> 00:01:12,720 ואחד המעניין ביותר. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: אז Dropbox בעצם לוקח את כל הקבצים 25 00:01:15,460 --> 00:01:19,500 כי אתה שם בתיקייה וזה מוריד נתחים את אותם קבצים לקוביות ארבעה מגה. 26 00:01:19,500 --> 00:01:23,270 אז אנחנו ניקח 100 מגהבייט קובץ PDF ואנחנו יהיו 27 00:01:23,270 --> 00:01:26,070 נתח אותה לנתחי 25 ארבעה מגה. 28 00:01:26,070 --> 00:01:30,670 אז גושים אלה מוצפנים ו אז אנחנו שולחים אותם לשרתי הבלוק שלנו. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: שרתי הבלוק הם האחסון ללוקים עצמם, 30 00:01:35,980 --> 00:01:39,570 וכך כל בלוק מאוחסן ב שרת הבלוק עם הנתונים 31 00:01:39,570 --> 00:01:43,990 וחשיש שו 356 של בלוק זה. 32 00:01:43,990 --> 00:01:48,280 זה הצפנה בסיסית מאוד פרימיטיבית שמסכם, במובן מסוים, 33 00:01:48,280 --> 00:01:53,140 את הנתונים בצורה מאוד ייחודית זה ייחודי לנתונים אלה. 34 00:01:53,140 --> 00:01:55,540 >> אתה יכול להעלות קובץ כולו בבת אחת, 35 00:01:55,540 --> 00:02:00,120 אבל מסתבר שאם אתה עושה את ש, קבצים גדולים באמת לקחת 36 00:02:00,120 --> 00:02:03,616 באמת הרבה זמן להעלות, ואם יש לך תקלה, אתה מחוץ מזל 37 00:02:03,616 --> 00:02:04,740 ואתה צריך להפעיל מחדש את זה. 38 00:02:04,740 --> 00:02:07,620 >> מה שאנחנו עושים זה אז אנחנו אומרים לי שרת אחר במערכת שלנו, 39 00:02:07,620 --> 00:02:11,550 ומה שאנו מכנים מטה שרת, שהיי זה קובץ, 40 00:02:11,550 --> 00:02:14,200 וזה מורכב להלן רשימה של בלוקים. 41 00:02:14,200 --> 00:02:17,030 ואנחנו עוברים את האלגוריתמים Hash לזהות בלוקים אלה 42 00:02:17,030 --> 00:02:18,770 במקום לטעון אותו מחדש כל הבלוק. 43 00:02:18,770 --> 00:02:20,820 Metaserver אז בודק את שרתי הבלוק, 44 00:02:20,820 --> 00:02:22,153 מוודא בלוקים נמצאים שם. 45 00:02:22,153 --> 00:02:23,140 במקרה כזה, מושלם. 46 00:02:23,140 --> 00:02:24,040 הכל טוב. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: כש רוצה בעצם להוריד 48 00:02:26,400 --> 00:02:30,050 את הקובץ מהאינטרנט, בוא למשל, אנחנו אומרים לmetaserver האחרון 49 00:02:30,050 --> 00:02:33,090 ראשון, היי אתה יכול להגיד לי לגבי היכן ממוקם של הקובץ הזה? 50 00:02:33,090 --> 00:02:37,230 וmetaserver יגיד, הו קובץ זה של למעשה 25 נתחים ארבעה מגה, 51 00:02:37,230 --> 00:02:38,210 והנה הם. 52 00:02:38,210 --> 00:02:41,712 ואז נלך שרת בלוק ו למעשה להוריד כל אחד מגושים אלו. 53 00:02:41,712 --> 00:02:43,670 ואז לשחזר את הקובץ משם, 54 00:02:43,670 --> 00:02:45,086 ולאחר מכן נתחיל את ההורדה. 55 00:02:45,086 --> 00:02:47,580 כן, כל כך Dropbox של עסקות עם קנה מידה בעצם 56 00:02:47,580 --> 00:02:50,460 מעצם, sharding מאוד אגרסיבי. 57 00:02:50,460 --> 00:02:56,400 >> ALEX Allain: Sharding הוא כאשר אתה לקחת את כל המשתמשים בהתחלה שלך עד 58 00:02:56,400 --> 00:03:00,010 או החברה שלך ואולי הם היה אמור להיות במסד נתונים אחד, 59 00:03:00,010 --> 00:03:02,620 וזה עובד נהדר עד שאתה פגע במספר מסוים של משתמשים. 60 00:03:02,620 --> 00:03:04,578 ובאמת מה שאתה רוצה לעשות הוא למצוא דרך כלשהי 61 00:03:04,578 --> 00:03:07,410 לפצל אותם על פני שני מסדי נתונים, או אולי יותר משניים. 62 00:03:07,410 --> 00:03:10,830 באופן אידיאלי, מספיק שאתה יכול יש לכל משתמש בעולם. 63 00:03:10,830 --> 00:03:13,080 >> ולכן כאשר אתה רסיס, מה שאתה עושה הוא שאתה 64 00:03:13,080 --> 00:03:16,830 למצוא דרך כלשהי שתחליט איזה מסד נתונים ללכת 65 00:03:16,830 --> 00:03:20,240 שלאינו דורש להכות בספרייה מרכזית. 66 00:03:20,240 --> 00:03:23,670 או שאולי זה מהיר מאוד, ספרייה זולה להסתכל למעלה מרכזית. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: אף פעם אין לנו כל מה שמאוחסן במסד נתונים אחד, 68 00:03:27,189 --> 00:03:28,980 כי זה כמעט אף פעם לא הולך לקנה מידה. 69 00:03:28,980 --> 00:03:33,970 אז במקום, מה שאנחנו נעשה הוא לקחת את כל מידע זה, כל הקבצים ש 70 00:03:33,970 --> 00:03:36,610 מאוחסנים במטה, שבר על פני מאות 71 00:03:36,610 --> 00:03:38,710 או אלפי מסדי נתונים לוגיים. 72 00:03:38,710 --> 00:03:42,900 וזה אומר שכאשר יש לנו בקשה למידע של משתמש, 73 00:03:42,900 --> 00:03:46,890 אנחנו נגיד ראשון, היי איזה מסד נתונים הוא המידע של משתמש זה מאוחסן ב? 74 00:03:46,890 --> 00:03:49,852 אז בעצם יהיה להשתמש בהחלטה שללכת 75 00:03:49,852 --> 00:03:51,560 למצוא מסד נתונים ה וששם נמצאים 76 00:03:51,560 --> 00:03:55,080 לטעון את כל הקבצים או כל metadata על הקבצים. 77 00:03:55,080 --> 00:03:56,464 >> אז אנחנו משתמשים בהרבה sharding. 78 00:03:56,464 --> 00:03:57,880 אבל sharding זה לא תמיד מספיק. 79 00:03:57,880 --> 00:04:00,380 אתה בעצם צריך מטמון הרבה בקשות משותפות, 80 00:04:00,380 --> 00:04:04,010 כי גם מסד נתונים אלה שאילתות יכולות להיות יקרות 81 00:04:04,010 --> 00:04:07,570 כך אנחנו גם עושים הלכידה אגרסיביים אסטרטגיות כדי לוודא כי רוב 82 00:04:07,570 --> 00:04:10,310 בקשות נפוצות הן די קל לחשב. 83 00:04:10,310 --> 00:04:14,630 ובעצם זה עושה הרבה מהר יותר וזה גורם לזה לעבוד בקנה מידה לשעבר. 84 00:04:14,630 --> 00:04:17,320 אז זה במאוד ברמה גבוהה איך Dropbox עובד. 85 00:04:17,320 --> 00:04:19,149 >> ALEX Allain: אני אלכס Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: ו אני תומאס Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX Allain: וזה CS50. 88 00:04:22,579 --> 00:04:23,936