1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Tôi Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Tôi là một kỹ sư phần mềm tại Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX Allain: Tôi là Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Tôi là một kỹ sư ở đây tại Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Vâng, tôi là thực sự là TF đầu tiên cho CS50 7 00:00:11,320 --> 00:00:13,660 khi David Malin đã qua các lớp học. 8 00:00:13,660 --> 00:00:17,010 Tôi đã được dạy CS50 cho hai học kỳ 9 00:00:17,010 --> 00:00:20,700 Mike Smith, người các giáo sư trước đó. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: Vì vậy, tôi thực sự đã làm không có CS50, nhưng tôi đã TF nó hai lần. 11 00:00:25,310 --> 00:00:29,050 Một lần như một TF thường xuyên, và sau đó năm cuối cấp của tôi 12 00:00:29,050 --> 00:00:32,520 Thực sự tôi là người đứng đầu của TF CS50, đó là rất nhiều niềm vui. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Vì vậy, khi David đưa tay ra 14 00:00:34,270 --> 00:00:38,647 với tôi về việc thiết lập Dropbox trong thiết bị CS50, 15 00:00:38,647 --> 00:00:41,230 Tôi đã thực sự vui mừng, bởi vì chúng tôi thực sự có một khách hàng Linux, 16 00:00:41,230 --> 00:00:46,270 do đó hầu hết người dùng sử dụng một trong hai Cửa sổ hoặc Macintosh khách hàng, 17 00:00:46,270 --> 00:00:50,940 nhưng Linux, Macintosh và Windows khách hàng là tất cả thực sự rất giống nhau. 18 00:00:50,940 --> 00:00:55,590 >> Vì vậy, những gì chúng tôi đã làm là chúng ta cài đặt sẵn khách hàng Dropbox Linux trong CS50 19 00:00:55,590 --> 00:00:59,990 thiết bị, và nó chạy giống như tất cả người dùng Linux khác của chúng tôi. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: Vì vậy, cách Dropbox hoạt động là nó 21 00:01:02,210 --> 00:01:08,590 chạy như một khách hàng trên nhiều khác nhau hệ điều hành và các thiết bị. 22 00:01:08,590 --> 00:01:11,387 Khách hàng máy tính Dropbox là một trong những nổi tiếng nhất, 23 00:01:11,387 --> 00:01:12,720 và một trong những thú vị nhất. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Vì vậy, Dropbox về cơ bản có tất cả các file 25 00:01:15,460 --> 00:01:19,500 mà bạn đặt trong thư mục và khối các tập tin thành nhiều phần bốn megabyte. 26 00:01:19,500 --> 00:01:23,270 Vì vậy, chúng ta sẽ 100 megabyte Tập tin PDF và chúng tôi sẽ 27 00:01:23,270 --> 00:01:26,070 đoạn vào 25 khối bốn megabyte. 28 00:01:26,070 --> 00:01:30,670 Những khối này sau đó được mã hóa và sau đó chúng tôi gửi đến các máy chủ của chúng tôi khối. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: Các máy chủ là khối lưu trữ cho các khối mình, 30 00:01:35,980 --> 00:01:39,570 và do đó, mỗi khối được lưu trữ trong máy chủ khối với dữ liệu 31 00:01:39,570 --> 00:01:43,990 và một băm Shaw 356 của khối đó. 32 00:01:43,990 --> 00:01:48,280 Đó là một mã hóa rất cơ bản nguyên thủy tóm tắt, trong một ý nghĩa, 33 00:01:48,280 --> 00:01:53,140 các dữ liệu trong một cách rất độc đáo đó là duy nhất để dữ liệu đó. 34 00:01:53,140 --> 00:01:55,540 >> Bạn có thể tải lên các toàn bộ tập tin cùng một lúc, 35 00:01:55,540 --> 00:02:00,120 nhưng nó quay ra nếu bạn làm rằng, các tập tin thực sự lớn có 36 00:02:00,120 --> 00:02:03,616 một thời gian rất dài để tải lên, và nếu bạn có một thất bại, bạn đang trên may mắn 37 00:02:03,616 --> 00:02:04,740 và bạn phải khởi động lại nó. 38 00:02:04,740 --> 00:02:07,620 >> Những gì sau đó chúng tôi làm là chúng ta nói một máy chủ trong hệ thống của chúng tôi, 39 00:02:07,620 --> 00:02:11,550 và những gì chúng ta gọi là siêu dữ liệu máy chủ, mà hey này là một tập tin, 40 00:02:11,550 --> 00:02:14,200 và nó bao gồm các sau danh sách các khối. 41 00:02:14,200 --> 00:02:17,030 Và chúng tôi bỏ qua các bảng băm để xác định những khối 42 00:02:17,030 --> 00:02:18,770 chứ không phải tải lên lại toàn bộ khối. 43 00:02:18,770 --> 00:02:20,820 Các metaserver sau đó kiểm tra các máy chủ chặn, 44 00:02:20,820 --> 00:02:22,153 đảm bảo các khối đang có. 45 00:02:22,153 --> 00:02:23,140 Nếu có, hoàn hảo. 46 00:02:23,140 --> 00:02:24,040 Tất cả mọi thứ là tốt. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Khi chúng tôi muốn về cơ bản tải về 48 00:02:26,400 --> 00:02:30,050 các tập tin từ internet, chúng ta hãy nói rằng, chúng tôi sẽ nói với metaserver cuối cùng 49 00:02:30,050 --> 00:02:33,090 đầu tiên, hey bạn có thể cho tôi biết về nơi ở của tập tin này? 50 00:02:33,090 --> 00:02:37,230 Và metaserver sẽ nói, oh tập tin này thực sự 25 khối bốn megabyte, 51 00:02:37,230 --> 00:02:38,210 và ở đây họ đang có. 52 00:02:38,210 --> 00:02:41,712 Và sau đó chúng tôi sẽ đi một máy chủ và khối thực sự tải về mỗi của những khối. 53 00:02:41,712 --> 00:02:43,670 Và sau đó chúng tôi sẽ xây dựng lại các tập tin từ đó, 54 00:02:43,670 --> 00:02:45,086 và sau đó chúng tôi sẽ bắt đầu tải về. 55 00:02:45,086 --> 00:02:47,580 Có, vì vậy Dropbox của giao dịch với quy mô cơ bản 56 00:02:47,580 --> 00:02:50,460 bởi rất, sharding rất tích cực. 57 00:02:50,460 --> 00:02:56,400 >> ALEX Allain: sharding là khi bạn mất tất cả người dùng trong đầu của bạn lên 58 00:02:56,400 --> 00:03:00,010 hoặc công ty của bạn và có thể họ sử dụng được trong một cơ sở dữ liệu, 59 00:03:00,010 --> 00:03:02,620 và hoạt động tuyệt vời cho đến khi bạn nhấn một số lượng nhất định của người sử dụng. 60 00:03:02,620 --> 00:03:04,578 Và thực sự những gì bạn muốn làm là tìm một cách nào đó 61 00:03:04,578 --> 00:03:07,410 chia những trên hai cơ sở dữ liệu, hoặc có thể nhiều hơn hai. 62 00:03:07,410 --> 00:03:10,830 Lý tưởng nhất, đủ để bạn có thể có mỗi người sử dụng trên thế giới. 63 00:03:10,830 --> 00:03:13,080 >> Và vì vậy khi bạn Shard, những gì bạn làm là bạn 64 00:03:13,080 --> 00:03:16,830 tìm thấy một số cách để quyết định mà cơ sở dữ liệu đi 65 00:03:16,830 --> 00:03:20,240 để mà không yêu cầu đánh một thư mục trung tâm. 66 00:03:20,240 --> 00:03:23,670 Hoặc có thể đó là một cách nhanh chóng, giá rẻ thư mục trung tâm nhìn lên. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Chúng tôi không bao giờ có tất cả mọi thứ được lưu trữ trong một cơ sở dữ, 68 00:03:27,189 --> 00:03:28,980 bởi vì đó là gần như không bao giờ đi vào quy mô. 69 00:03:28,980 --> 00:03:33,970 Vì vậy, thay vào đó, những gì chúng tôi sẽ làm là lấy tất cả thông tin đó, tất cả các tập tin mà 70 00:03:33,970 --> 00:03:36,610 được lưu trữ trên các siêu dữ liệu, Shard trên hàng trăm 71 00:03:36,610 --> 00:03:38,710 hoặc hàng ngàn cơ sở dữ liệu hợp lý. 72 00:03:38,710 --> 00:03:42,900 Và đó có nghĩa là khi chúng ta có một yêu cầu thông tin của người dùng, 73 00:03:42,900 --> 00:03:46,890 đầu tiên chúng ta sẽ nói, hey mà cơ sở dữ liệu được thông tin của người dùng này được lưu trữ trong? 74 00:03:46,890 --> 00:03:49,852 Sau đó chúng tôi sẽ cơ bản sử dụng quyết định đó đi 75 00:03:49,852 --> 00:03:51,560 tìm cơ sở dữ liệu và đó là nơi chúng tôi sẽ 76 00:03:51,560 --> 00:03:55,080 tải tất cả các tập tin hoặc tất cả các siêu dữ liệu về các tập tin. 77 00:03:55,080 --> 00:03:56,464 >> Vì vậy, chúng tôi sử dụng rất nhiều sharding. 78 00:03:56,464 --> 00:03:57,880 Nhưng sharding không phải là luôn luôn đủ. 79 00:03:57,880 --> 00:04:00,380 Bạn đang thực sự cần bộ nhớ cache rất nhiều các yêu cầu chung, 80 00:04:00,380 --> 00:04:04,010 bởi vì ngay cả những cơ sở dữ liệu truy vấn có thể tốn kém 81 00:04:04,010 --> 00:04:07,570 vì vậy chúng tôi cũng làm chụp tích cực chiến lược để đảm bảo rằng nhất 82 00:04:07,570 --> 00:04:10,310 yêu cầu phổ biến là khá dễ dàng để tính toán. 83 00:04:10,310 --> 00:04:14,630 Và về cơ bản là làm cho rất nhiều nhanh hơn và nó làm cho nó hoạt động quy mô cũ. 84 00:04:14,630 --> 00:04:17,320 Vì vậy, đó là một rất cấp cao như thế nào Dropbox hoạt động. 85 00:04:17,320 --> 00:04:19,149 >> ALEX Allain: Tôi là Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Và Tôi Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX Allain: Và đây là CS50. 88 00:04:22,579 --> 00:04:23,936