2009-08-19 26 views
9

thời gian và một lần nữa khi tôi tìm kiếm một chủ đề trên Google, Google trả về cho tôi những kết quả và cũng in ra một số số liệu thống kê nhưGoogle phân phối kết quả nhanh như thế nào?

"Kết quả 1 - 10 trong khoảng 8.850.000 cho J2ME (0,24 giây)."

Tôi nhận thấy rằng số giây do Google thực hiện để phân phối kết quả nằm trong phần nhỏ của phạm vi thứ hai.

Google phân phối các trang quá nhanh như thế nào, loại thủ thuật tối ưu hóa cơ sở dữ liệu nào được sử dụng ở cuối trang?

+0

Lập trình có liên quan ??? – tw39124

+4

Tôi đoán SO người dùng có thể hưởng lợi từ câu trả lời này. –

+0

Trên thực tế tìm kiếm thứ hai là khoảng 0,1 giây! Bởi vì họ phải được bộ nhớ đệm các tiêu chí tìm kiếm một thời gian. Nếu ai đó trên khắp thế giới đã tìm kiếm các tiêu chí của bạn thì nó cũng sẽ là 0,1 giây lần đầu tiên! Để thử điều này: hãy nhập 'bản đồ' và tìm kiếm và bạn thấy rằng điều này luôn luôn khoảng 0,1 giây vì nó được người dùng tìm kiếm liên tục. Nhưng nếu bạn tìm kiếm văn bản ngẫu nhiên như 'asdasddsfdsfsf', nó sẽ mất 0,2 -0,5 giây. – user44298

Trả lời

9

Tôi nghĩ lý do chính cho việc thực hiện frontend là:

  • Mỗi yêu cầu được phân phối cho một loạt các máy song song (Tôi đã đọc ở đâu đó rằng mỗi truy vấn số truy cập khoảng 12 máy), có thể là một các máy đơn lẻ tập hợp các phản hồi từ các máy này
  • Tất cả dữ liệu chỉ mục được giữ trong RAM. Với dữ liệu chỉ mục, ý tôi là thuật ngữ từ vựng và chỉ mục danh sách bài đăng và trong trường hợp của Google có thể có nhiều chỉ mục hơn, ví dụ: để sửa lỗi chính tả. Ngay cả với một đĩa đơn I/O một nơi nào đó độ trễ của đĩa tìm kiếm ngăn chặn hiệu suất như vậy.

Googles Map/Reduce, GFS là công cụ tuyệt vời để xử lý nền nhưng không có gì liên quan đến hiệu suất giao diện người dùng.

+0

Vâng thưa ngài, tôi nghĩ bạn đang thiếu một điểm nào đó. Google không chỉ trả về danh sách các URL mà còn cung cấp danh sách xếp hạng các URL. Vì vậy, một số loại tính toán phải xảy ra khi truy vấn truy cập một trong 12 máy đó. Và xem xét việc cá nhân hóa cũng được thực hiện và Google có cơ sở người dùng là Hàng tỷ, tôi sẽ đặt cược vào GFS và MapReduce được sử dụng trong danh sách URL được lấy từ chỉ mục tại mỗi một trong số 12 máy đó để tính mức độ liên quan của mỗi lần truy xuất url wrt truy vấn. Và sau đó offcourse bạn có thể sắp xếp trên những con số liên quan để trở về danh sách xếp hạng – Shatu

+0

Thưa ông, tôi vẫn đặt cược chống lại. MapReduce là thiết kế một hệ thống xử lý hàng loạt với độ trễ khá cao. Trong cả hai trường hợp, đây là (được giáo dục) dự đoán. Tôi không biết chắc chắn. – dmeister

+0

'Tất cả dữ liệu chỉ mục được giữ trong RAM'. Điều này thật ngớ ngẩn. – michaelmeyer

5

Map and Reduce + trung tâm dữ liệu được phân phối rất lớn.

+1

MapReduce không phải là chìa khóa để tính toán thời gian thực nhanh chóng. Khi gửi một công việc, độ trễ của Hadoop thường hơn một phút do tính chất thiết kế của nó. – user1036719

Các vấn đề liên quan