1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Jestem Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Jestem inżynierem oprogramowania w Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Jestem Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Jestem inżynierem tutaj na Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Tak, byłem faktycznie szef TF dla CS50 7 00:00:11,320 --> 00:00:13,660 kiedy David Malin objął klasę. 8 00:00:13,660 --> 00:00:17,010 I już uczyć CS50 na dwa semestry 9 00:00:17,010 --> 00:00:20,700 Mike Smith, który był przed profesorem tam. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Więc tak naprawdę nie podjąć CS50, ale dwa razy nie TF to. 11 00:00:25,310 --> 00:00:29,050 Gdy jako zwykły Tf i wtedy mój ostatni rok 12 00:00:29,050 --> 00:00:32,520 I faktycznie z głowy TF CS50, co było dużo zabawy. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Tak kiedy David wyciągnął 14 00:00:34,270 --> 00:00:38,647 mi na temat konfigurowania Dropbox w urządzeniu CS50, 15 00:00:38,647 --> 00:00:41,230 Byłem bardzo podekscytowany, ponieważ faktycznie mieć klienta Linux, 16 00:00:41,230 --> 00:00:46,270 więc większość użytkowników korzystać zarówno Klienci z systemem Windows lub Macintosh, 17 00:00:46,270 --> 00:00:50,940 ale Linux, Macintosh i Windows klienci są rzeczywiście bardzo podobne. 18 00:00:50,940 --> 00:00:55,590 >> Więc to, co zrobiliśmy to my preinstalowany Klient Dropbox Linux w CS50 19 00:00:55,590 --> 00:00:59,990 urządzenia, i to działa tak jak wszystkich naszych innych użytkowników Linuksa. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Tak sposób działa to Dropbox 21 00:01:02,210 --> 00:01:08,590 działa jako klient na wielu różnych systemów operacyjnych i urządzeń. 22 00:01:08,590 --> 00:01:11,387 Dropbox jest klient pulpitu jeden z najbardziej powszechnie wiadomo, 23 00:01:11,387 --> 00:01:12,720 i jednym z najbardziej interesujących. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Więc Dropbox w zasadzie wykonuje wszystkie pliki 25 00:01:15,460 --> 00:01:19,500 , które można umieścić w folderze i chunks te pliki na kawałki cztery megabajt. 26 00:01:19,500 --> 00:01:23,270 Więc bierzemy 100-megabajt Plik PDF, a my 27 00:01:23,270 --> 00:01:26,070 kawałek go do 25 czterech megabajtów kawałki. 28 00:01:26,070 --> 00:01:30,670 Kawałki te są następnie szyfrowane i potem wysyłać je do naszych serwerów blokowych. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: blok są serwery przechowywania samych bloków, 30 00:01:35,980 --> 00:01:39,570 a każdy blok jest tak przechowywany w Serwer blok z danymi 31 00:01:39,570 --> 00:01:43,990 i Shaw 356 hash tego bloku. 32 00:01:43,990 --> 00:01:48,280 To jest bardzo proste, prymitywne szyfrowanie podsumowujący, w pewnym sensie, 33 00:01:48,280 --> 00:01:53,140 Dane w bardzo szczególny sposób to unikalne dla tych danych. 34 00:01:53,140 --> 00:01:55,540 >> Można załadować cały plik na raz, 35 00:01:55,540 --> 00:02:00,120 ale okazuje się, jeśli nie , że naprawdę duże pliki zajmują 36 00:02:00,120 --> 00:02:03,616 bardzo długi czas, aby przesłać, a jeśli masz awarię, masz pecha 37 00:02:03,616 --> 00:02:04,740 i trzeba go ponownie uruchomić. 38 00:02:04,740 --> 00:02:07,620 >> Co wtedy zrobić, to możemy powiedzieć, że inny serwer w naszym systemie, 39 00:02:07,620 --> 00:02:11,550 i to, co nazywamy metadane Serwer, że hej, to jest plik, 40 00:02:11,550 --> 00:02:14,200 i to w składzie Poniższa lista bloków. 41 00:02:14,200 --> 00:02:17,030 I mijamy się mieszań zidentyfikować te bloki 42 00:02:17,030 --> 00:02:18,770 zamiast ponowne przesłanie Cały blok. 43 00:02:18,770 --> 00:02:20,820 Metaserver następnie sprawdza serwery blokowe, 44 00:02:20,820 --> 00:02:22,153 zapewnia, że ​​bloki są tam. 45 00:02:22,153 --> 00:02:23,140 Jeśli są, doskonały. 46 00:02:23,140 --> 00:02:24,040 Wszystko jest dobrze. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Kiedy chce po prostu ściągnąć 48 00:02:26,400 --> 00:02:30,050 plik z internetu, niech powiedzmy, powiemy do ostatniego metaserver 49 00:02:30,050 --> 00:02:33,090 Pierwszy, hej możesz mi powiedzieć o tym, gdzie znajduje się ten plik w? 50 00:02:33,090 --> 00:02:37,230 I metaserver powie, oh ten plik jest faktycznie 25 kawałki megabajt, cztery 51 00:02:37,230 --> 00:02:38,210 i tu są. 52 00:02:38,210 --> 00:02:41,712 A potem pójdziemy blok i serwer faktycznie ściągnąć każdy z tych kawałków. 53 00:02:41,712 --> 00:02:43,670 A potem będziemy rekonstruować plik stamtąd, 54 00:02:43,670 --> 00:02:45,086 a następnie będziemy rozpocząć pobieranie. 55 00:02:45,086 --> 00:02:47,580 Tak, tak, Dropbox transakcji ze skalą w zasadzie 56 00:02:47,580 --> 00:02:50,460 przez bardzo, bardzo agresywny sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding jest, kiedy podjęcia wszystkich użytkowników w rozruchu 58 00:02:56,400 --> 00:03:00,010 lub firmę, a może one stosowany jest w jednej bazy 59 00:03:00,010 --> 00:03:02,620 i że działa świetnie, dopóki nie hit pewnej liczby użytkowników. 60 00:03:02,620 --> 00:03:04,578 I naprawdę to, co chcesz zrobić, to znaleźć sposób, 61 00:03:04,578 --> 00:03:07,410 podzielić te w poprzek dwóch bazy danych, a może więcej niż dwa. 62 00:03:07,410 --> 00:03:10,830 Idealnie, tyle, że można posiada każdy użytkownik w świecie. 63 00:03:10,830 --> 00:03:13,080 >> I tak, gdy odłamek, co możesz zrobić, to ci 64 00:03:13,080 --> 00:03:16,830 znaleźć sposób podejmowania decyzji która baza danych, aby przejść 65 00:03:16,830 --> 00:03:20,240 na które nie wymagają uderzając centralny katalog. 66 00:03:20,240 --> 00:03:23,670 A może jest to bardzo szybkie, tanie przeglądowa centralny katalog. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: nie mamy wszystko przechowywane w jednej bazie danych, 68 00:03:27,189 --> 00:03:28,980 dlatego, że prawie nigdy nie będzie w skali. 69 00:03:28,980 --> 00:03:33,970 Więc zamiast tego, co możemy zrobić, to wziąć wszystko że informacje, wszystkie pliki, które 70 00:03:33,970 --> 00:03:36,610 są przechowywane w metadanych, Shard całej setki 71 00:03:36,610 --> 00:03:38,710 lub tysiące logicznych baz danych. 72 00:03:38,710 --> 00:03:42,900 A to oznacza, że ​​gdy mamy Prośba o informacje użytkownika, 73 00:03:42,900 --> 00:03:46,890 my najpierw powiedzieć, hej, która baza danych są informacje użytkownika przechowywane w? 74 00:03:46,890 --> 00:03:49,852 Wtedy będziemy w zasadzie stosować tę decyzję, aby przejść 75 00:03:49,852 --> 00:03:51,560 okaże się, że baza danych i to, gdzie będziemy 76 00:03:51,560 --> 00:03:55,080 załadować wszystkie pliki lub wszystkie metadane o plikach. 77 00:03:55,080 --> 00:03:56,464 >> Więc używamy dużo sharding. 78 00:03:56,464 --> 00:03:57,880 Ale sharding nie zawsze jest wystarczające. 79 00:03:57,880 --> 00:04:00,380 W rzeczywistości trzeba buforować Wiele wspólnych wniosków, 80 00:04:00,380 --> 00:04:04,010 bo nawet ci, bazy danych Zapytania mogą być kosztowne 81 00:04:04,010 --> 00:04:07,570 dlatego też nie agresywny przechwytywanie strategie, aby upewnić się, że najbardziej 82 00:04:07,570 --> 00:04:10,310 wspólne wnioski są dość łatwo obliczyć. 83 00:04:10,310 --> 00:04:14,630 I w zasadzie sprawia, że ​​wiele szybsze i to sprawia, że ​​działa ex skalę. 84 00:04:14,630 --> 00:04:17,320 Więc to jest na bardzo na wysokim szczeblu, jak Dropbox działa. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Jestem Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: A Jestem Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: I to jest CS50. 88 00:04:22,579 --> 00:04:23,936