1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Ich bin Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Ich bin ein Software-Ingenieur bei Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Ich bin Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Ich bin ein Ingenieur hier bei Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Ja, ich war tatsächlich der erste Kopf TF für CS50 7 00:00:11,320 --> 00:00:13,660 als David Malin übernahm die Klasse. 8 00:00:13,660 --> 00:00:17,010 Ich hatte bereits unterrichtet CS50 für zwei Semester 9 00:00:17,010 --> 00:00:20,700 mit Mike Smith, der war der Stand der Professor dort. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Also ich eigentlich nicht CS50 nehmen, aber ich habe es zweimal TF. 11 00:00:25,310 --> 00:00:29,050 Einmal als normale TF, und dann mein Abschlussjahr 12 00:00:29,050 --> 00:00:32,520 Ich war eigentlich der Kopf TF CS50, die eine Menge Spaß gemacht hat. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: So als David streckte 14 00:00:34,270 --> 00:00:38,647 mir über die Einrichtung Dropbox in der CS50-Appliance, 15 00:00:38,647 --> 00:00:41,230 Ich war wirklich aufgeregt, denn wir haben tatsächlich einen Linux-Client, 16 00:00:41,230 --> 00:00:46,270 so dass die meisten unserer Benutzer entweder Windows-oder Macintosh-Clients die, 17 00:00:46,270 --> 00:00:50,940 aber die Linux-, Macintosh-und Windows Kunden sind alle eigentlich sehr ähnlich. 18 00:00:50,940 --> 00:00:55,590 >> Also, was wir getan haben ist, dass wir vorinstalliert die Dropbox-Linux-Client in der CS50 19 00:00:55,590 --> 00:00:59,990 Gerät, und es läuft so wie alle anderen Linux-Benutzer. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Also die Weg Dropbox funktioniert, ist es 21 00:01:02,210 --> 00:01:08,590 läuft als Client auf verschiedenen Betriebssysteme und Geräte. 22 00:01:08,590 --> 00:01:11,387 Die Dropbox-Desktop-Client ist eines der bekanntesten, 23 00:01:11,387 --> 00:01:12,720 und eine der interessantesten. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Also Dropbox nimmt grundsätzlich alle Dateien 25 00:01:15,460 --> 00:01:19,500 dass Sie in den Ordner legen und es Brocken diese Dateien in vier Megabyte Brocken. 26 00:01:19,500 --> 00:01:23,270 Also werden wir eine 100-MB-nehmen PDF-Datei und wir werden 27 00:01:23,270 --> 00:01:26,070 Stück in vier 25-MB-Brocken. 28 00:01:26,070 --> 00:01:30,670 Diese Stücke werden dann verschlüsselt und dann schicken wir sie zu unserem Block-Servern. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Die Block-Server sind der Speicher für die Blöcke selbst, 30 00:01:35,980 --> 00:01:39,570 und so wird jeder Block gespeicherten der Block-Server mit der Daten 31 00:01:39,570 --> 00:01:43,990 Shaw und eine 356-Hash dieses Blocks. 32 00:01:43,990 --> 00:01:48,280 Das ist eine sehr primitive Grundverschlüsselung dass fasst, in gewissem Sinne, 33 00:01:48,280 --> 00:01:53,140 die Daten in einer einzigartigen Art und Weise das ist einzigartig für diese Daten. 34 00:01:53,140 --> 00:01:55,540 >> Sie könnten lade die gesamte Datei auf einmal 35 00:01:55,540 --> 00:02:00,120 aber es stellt sich heraus, ob Sie tun dass die wirklich großen Dateien nehmen 36 00:02:00,120 --> 00:02:03,616 eine wirklich lange Zeit zu laden, und wenn Sie einen Ausfall haben, aus Glück sind Sie 37 00:02:03,616 --> 00:02:04,740 und Sie haben, um es neu zu starten. 38 00:02:04,740 --> 00:02:07,620 >> Was wir dann zu tun ist, wir sagen ein anderer Server in unserem System, 39 00:02:07,620 --> 00:02:11,550 und was wir nennen die Metadaten Server, hey das ist, dass eine Datei, 40 00:02:11,550 --> 00:02:14,200 und es ist, der sich aus folgende Liste von Blöcken. 41 00:02:14,200 --> 00:02:17,030 Und wir verzichten die Hashes , diese Blöcke zu identifizieren 42 00:02:17,030 --> 00:02:18,770 eher als Re-Upload der gesamte Block. 43 00:02:18,770 --> 00:02:20,820 Die Metaserver dann prüft die Block-Servern 44 00:02:20,820 --> 00:02:22,153 stellt sicher, dass die Blöcke sind da. 45 00:02:22,153 --> 00:02:23,140 Wenn sie sind, perfekt. 46 00:02:23,140 --> 00:02:24,040 Alles ist gut. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Wenn wir wollen im Grunde downloaden 48 00:02:26,400 --> 00:02:30,050 die Datei aus dem Internet, lassen Sie uns sagen wir, wir werden bis zum letzten Metaserver sagen 49 00:02:30,050 --> 00:02:33,090 erste, hey kannst du mir sagen wo liegt dieser Datei? 50 00:02:33,090 --> 00:02:37,230 Und Metaserver werden sagen, oh, diese Datei tatsächlich vier 25-MB-Brocken, 51 00:02:37,230 --> 00:02:38,210 und hier sind sie. 52 00:02:38,210 --> 00:02:41,712 Und dann werden wir einen Block-Server gehen und tatsächlich herunterladen jede dieser Brocken. 53 00:02:41,712 --> 00:02:43,670 Und dann werden wir rekonstruieren die Datei von dort, 54 00:02:43,670 --> 00:02:45,086 und dann werden wir den Download zu starten. 55 00:02:45,086 --> 00:02:47,580 Ja, so Dropbox der Angebote mit Skala im Grunde 56 00:02:47,580 --> 00:02:50,460 von sehr, sehr aggressive Splitter. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding ist, wenn Sie nehmen alle Benutzer in Ihrem Start-up 58 00:02:56,400 --> 00:03:00,010 oder Ihre Firma und vielleicht verwendet, um in einer Datenbank sein, 59 00:03:00,010 --> 00:03:02,620 und das funktioniert super, bis Sie traf eine bestimmte Anzahl von Benutzern. 60 00:03:02,620 --> 00:03:04,578 Und wirklich, was Sie wollen tun müssen, ist einen Weg finden, 61 00:03:04,578 --> 00:03:07,410 zu denen in zwei Teile gespalten Datenbanken, oder vielleicht mehr als zwei. 62 00:03:07,410 --> 00:03:10,830 Idealerweise genug, dass man haben alle Nutzer in der Welt. 63 00:03:10,830 --> 00:03:13,080 >> Und so, wenn Sie Scherbe, was Sie tun, ist, dass Sie 64 00:03:13,080 --> 00:03:16,830 einen Weg finden, zu entscheiden, die Datenbank zu gehen 65 00:03:16,830 --> 00:03:20,240 derjenigen erfordert keine Kollision mit einem zentralen Verzeichnis. 66 00:03:20,240 --> 00:03:23,670 Oder vielleicht ist es eine sehr schnelle, billige Look-up-zentralen Verzeichnis. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Wir haben nie alles in einer Datenbank gespeichert, 68 00:03:27,189 --> 00:03:28,980 denn das ist fast nie zu skalieren. 69 00:03:28,980 --> 00:03:33,970 Anstatt also, was wir tun, ist alles dass die Informationen, alle Dateien, die 70 00:03:33,970 --> 00:03:36,610 auf den Metadaten gespeichert, Scherbe über Hunderte 71 00:03:36,610 --> 00:03:38,710 oder Tausende von logischen Datenbanken. 72 00:03:38,710 --> 00:03:42,900 Und das bedeutet, dass, wenn wir einen Antrag auf Informationen eines Benutzers, 73 00:03:42,900 --> 00:03:46,890 wir zunächst sagen, hey die Datenbank die Informationen dieses Benutzers gespeichert? 74 00:03:46,890 --> 00:03:49,852 Dann werden wir im Grunde verwenden Sie diese Entscheidung zu gehen 75 00:03:49,852 --> 00:03:51,560 finden diese Datenbank und das ist, wo wir 76 00:03:51,560 --> 00:03:55,080 Laden Sie alle Dateien oder alle die Metadaten zu den Dateien. 77 00:03:55,080 --> 00:03:56,464 >> So verwenden wir eine Menge Splitter. 78 00:03:56,464 --> 00:03:57,880 Aber Splitter ist nicht immer genug. 79 00:03:57,880 --> 00:04:00,380 Sie sind tatsächlich benötigen, um zwischenspeichern eine Menge der gemeinsamen Anfragen 80 00:04:00,380 --> 00:04:04,010 denn selbst die Datenbank Abfragen können teuer sein 81 00:04:04,010 --> 00:04:07,570 so tun wir auch aggressive Erfassung Strategien, um sicherzustellen, dass die meisten 82 00:04:07,570 --> 00:04:10,310 häufigsten Anfragen sind ganz einfach zu berechnen. 83 00:04:10,310 --> 00:04:14,630 Und im Grunde, dass macht viel schneller und es macht es arbeiten Ex-Skala. 84 00:04:14,630 --> 00:04:17,320 Also das ist auf einem sehr High-Level-wie Dropbox funktioniert. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Ich bin Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Und Ich bin Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Und das ist CS50. 88 00:04:22,579 --> 00:04:23,936