1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 ΘΩΜΑΣ Carriero: Είμαι Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Είμαι μηχανικός λογισμικού στο Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Είμαι Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Είμαι μηχανικός εδώ στο Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> ΘΩΜΑΣ Carriero: Ναι, ήμουν στην πραγματικότητα η πρώτη TF το κεφάλι για CS50 7 00:00:11,320 --> 00:00:13,660 όταν ο David Malin ανέλαβε την τάξη. 8 00:00:13,660 --> 00:00:17,010 Είχα ήδη διδασκαλία CS50 για δύο εξάμηνα 9 00:00:17,010 --> 00:00:20,700 με τον Mike Smith, ο οποίος ήταν η προηγούμενη καθηγητής εκεί. 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 ΘΩΜΑΣ Carriero: Έτσι όταν ο Δαβίδ άπλωσε 14 00:00:34,270 --> 00:00:38,647 για μένα για τη δημιουργία Dropbox στη συσκευή CS50, 15 00:00:38,647 --> 00:00:41,230 Ήμουν πραγματικά ενθουσιασμένος, γιατί έχουμε πραγματικά έναν πελάτη Linux, 16 00:00:41,230 --> 00:00:46,270 έτσι οι περισσότεροι από τους χρήστες μας χρησιμοποιούν είτε Windows ή οι πελάτες Macintosh, 17 00:00:46,270 --> 00:00:50,940 αλλά το Linux, Macintosh και Windows πελάτες είναι όλα στην πραγματικότητα πολύ παρόμοια. 18 00:00:50,940 --> 00:00:55,590 >> Έτσι, αυτό που κάναμε είναι ότι προ-εγκατεστημένο ο πελάτης Dropbox Linux στο CS50 19 00:00:55,590 --> 00:00:59,990 συσκευής, και τρέχει ακριβώς όπως το σύνολο των χρηστών του Linux μας. 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 >> ΘΩΜΑΣ Carriero: Έτσι Dropbox βασικά παίρνει όλα τα αρχεία 25 00:01:15,460 --> 00:01:19,500 ότι θα βάλετε στο φάκελο και κομμάτια αυτά τα αρχεία σε κομμάτια τεσσάρων megabyte. 26 00:01:19,500 --> 00:01:23,270 Έτσι θα ρίξουμε μια 100 megabyte Αρχείο PDF και θα 27 00:01:23,270 --> 00:01:26,070 Είναι κομμάτι σε 25 κομμάτια τεσσάρων megabyte. 28 00:01:26,070 --> 00:01:30,670 Αυτά τα κομμάτια, στη συνέχεια, μυστικές και τότε μπορούμε να τα στείλετε σε servers μπλοκ μας. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Οι servers μπλοκ είναι η αποθήκευση των ίδιων των μπλοκ, 30 00:01:35,980 --> 00:01:39,570 και έτσι κάθε μπλοκ αποθηκεύεται σε ο διακομιστής μπλοκ με τα δεδομένα 31 00:01:39,570 --> 00:01:43,990 και Shaw 356 hash αυτού του μπλοκ. 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 και αυτό που λέμε τα μεταδεδομένα διακομιστή, ότι hey αυτό είναι ένα αρχείο, 40 00:02:11,550 --> 00:02:14,200 και αυτό είναι που αποτελείται από το ακόλουθη λίστα των μπλοκ. 41 00:02:14,200 --> 00:02:17,030 Και περνάμε τις hashes να εντοπίσει αυτά τα τμήματα 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 >> ΘΩΜΑΣ Carriero: Όταν θέλετε να κατεβάσετε βασικά 48 00:02:26,400 --> 00:02:30,050 το αρχείο από το διαδίκτυο, ας ας πούμε, εμείς θα πούμε την τελευταία metaserver 49 00:02:30,050 --> 00:02:33,090 Πρώτα, hey μπορείτε να μου πείτε σχετικά με το πού βρίσκεται αυτού του αρχείου; 50 00:02:33,090 --> 00:02:37,230 Και metaserver θα πει, μα αυτό το αρχείο του στην πραγματικότητα 25 κομμάτια τέσσερις-megabyte, 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 >> Και έτσι όταν Shard, ό, τι κάνετε είναι να 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 Ή ίσως είναι μια πολύ γρήγορη, φθηνά look-up κεντρικό κατάλογο. 67 00:03:23,670 --> 00:03:27,189 >> ΘΩΜΑΣ 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 αποθηκεύονται στο μεταδεδομένα, Shard σε εκατοντάδες 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 θα πω πρώτα, hey που βάση δεδομένων είναι πληροφορίες του χρήστη αποθηκεύονται σε; 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 φορτώσει όλα τα αρχεία ή όλα τα μεταδεδομένα σχετικά με τα αρχεία. 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 Είστε πραγματικά πρέπει να cache πολλά από τα κοινά αιτήματα, 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 Και βασικά ότι κάνει πολλά πιο γρήγορα και κάνει το έργο ex κλίμακα. 84 00:04:14,630 --> 00:04:17,320 Έτσι ώστε να είναι σε πολύ υψηλού επιπέδου πώς λειτουργεί Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Είμαι Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> ΘΩΜΑΣ Carriero: Και Είμαι Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Και αυτό είναι CS50. 88 00:04:22,579 --> 00:04:23,936