Tăng tốc độ crawl và crawl song song

Một phần của tài liệu xây dựng một công cụ tìm kiếm thực sự (Trang 37 - 40)

1. MỤC ĐÍC H

1.5.3.Tăng tốc độ crawl và crawl song song

1.5.3.1. Giới thiệu

Làm thế nào để tăng tốc độ tải trang Web cho crawler? Đó chính là một trong những vấn đề quan trọng trong việc xây dựng crawler. Không thể nào tải về toàn bộ Web chỉ với một tiến trình crawl. Hầu hết các Search Engine hiện nay đều chạy song song nhiều tiến trình crawl[18]. Các nghiên cứu song song hóa quá trình crawl đang phải đối mặt với một số vấn đề:

Overlap: Khi nhiều tiến trình crawl chạy cùng một lúc, sẽ xảy ra hiện tượng có nhiều hơn một tiến trình cùng tải một trang Web về tại một thời điểm. Một tiến trình không hề biết rằng có một tiến trình khác cũng đang tải (hoặc đã tải ) trang Web mà nó định tải về. Đây là một sự lãng phí tài nguyên và vấn đề đặt ra là làm sao để tránh được sự lãng phí nàỵ

Quality: Chất lượng của từng tiến trình có cao hay không? Như đã trình bày ở trên, crawler có xu hướng viếng thăm các trang Web quan trọng trước nhất. Tuy nhiên, trong quá trình crawl song song, mỗi tiến trình không biết các kết quả crawl của các tiến trình khác, và càng không thể biết hết toàn bộ Web. Chính vì vậy mà những đánh giá của nó dựa trên những kết quả nghèo nàn mà nó thu lượm được nên độ chính xác không caọ Vấn đề đặt ra ở đây là làm thế nào để đảm bảo chất lượng của các trang Web tải về trong trường hợp song song hóa và crawl đơn lẻ là tốt như nhaụ

Communication bandwith: Để giải quyết hai vấn đề nêu trên, các tiến trình phải thường xuyên giao tiếp với nhau, cùng nhau hoạt động. Quá trình giao tiếp này tăng lên đáng kể khi số lượng tiến trình tăng. Những gì mà các tiến trình cần giao tiếp và làm thế nào để giảm tối đa giao tiếp giữa chúng là vấn đề phải xem xét.

Song song hóa quá trình crawl là một thách thức lớn. Một khi đã song song hóa các tiến trình, những thuận lợi đem lại là không nhỏ so với crawl đơn lẻ. Một vài thuận lợi đó là:

Scalability: Do kích thước khổng lồ của Web mà, song song hóa crawl là cấp bách nhằm đạt được tốc độ tải trang Web yêu cầụ

Network-load dispersion (Sự phân tán tải cho mạng): Các tiến trình crawl có thể được chạy tại các nơi có vị trí địa lý khác nhau, mỗi tiến trình thực hiện crawl các trang Web gần nó về mặt địa lý (chẳng hạn như các tiến trình ở Đức crawl các trang Web ở châu Âu trong khi các tiến trình tại Nhật Bản tiến hành crawl các trang Web ở châu Á). Như vậy tải mạng sẽ được phân tán cho nhiều vùng và nghiễm nhiên điều này là cần thiết khi một mạng đơn không thể kiểm soát hay tải nổi thông lượng khổng

lồ do crawl với mật độ cao (large-scale crawl).

Network-load reduction: Cùng với việc phân tán tải, song song hóa cũng giảm tải cho mạng. Chẳng hạn như crawler tại Bắc Mỹ tiến hành crawl các Websites tại châu Âu thì các Website trước tiên phải đi qua mạng “cục bộ” của châu Âu, sau đó đi từ châu Âu sang châu Mỹ (liên lục địa) rồi qua mạng “cục bộ” châu Mỹ. Nếu như các crawlers tại châu Âu crawl các Websites tại châu Âu và các crawlers tại châu Mỹ crawl các Websites tại châu Mỹ thì sẽ giảm được việc lưu chuyển các Websites giữa các châu lục. Tất nhiên là sau này các trang Web phải được đưa về trung tâm lưu trữ nào đó, tuy nhiên trong trường hợp này thì lưu lượng thông tin phải lưu chuyển cũng sẽ nhỏ hơn do thông tin được nén lại, các thông tin gửi đi nhiều khi chỉ là sự khác nhau

giữa các trang Web (cập nhật), hoặc là sự tổng kết các thông tin chính phục vụ cho quá trình đánh chỉ mục tại trung tâm lưu trữ.

1.5.3.2. Kiến trúc crawler song song

Hình 15 minh họa kiến trúc chung của crawler song song hóa[10]. Một crawler

song song bao gồm nhiều tiến trình crawlers (C-proc). Mỗi một C-proc thực thi các

công việc mà một crawler đơn lẻ kiểm soát. Nó tải các trang Web về và lưu trữ cục bộ,

tách các URLs và lần theo các URLs đó. Tùy thuộc vào cách mà các C-proc chia nhỏ

các tác vụ tải trang Web mà một số URLs có thể được gửi cho các C-proc khác.

Hình 14. Kiến trúc chung của crawler song song

Các C-proc có thể được phân tán trong mạng cục bộ (intra-site parallel crawler) hay các mạng có vị trí địa lý khác nhau, mạng WAN, Internet (distributed crawler). Đối với distributed crawler, việc giao tiếp giữa các crawlers sẽ gặp khó khăn do các crawlers ở xa nhau và tốc độ mạng giữa chúng bị giảm đáng kể và có giới hạn (tốc độ mạng Internet) so với intra-sitẹ

Khi tải các trang Web, các crawlers có thể cùng nhau viếng thăm một trang Web (hiện tượng overlap). Để hạn chế hiện tượng này, một số phương pháp được đưa ra bao gồm:

Independent: Các C-proc crawl một cách độc lập với tập các URLs ban đầu

khác nhaụ Các C-proc không cần phải quan tâm đến các C-proc khác làm gì. Như vậy

có thể dẫn đến overlap nhưng do tập các URLs ban đầu của các C-proc là các URLs có

nguồn gốc khác nhau nên hy vọng rằng hiện tượng overlap là không đáng kể. Ưu điểm

của phương pháp này là sự giao tiếp và kết hợp các C-proc giảm tối thiểụ

Dynamic assignment: Là phương pháp mà trong đó bộ điều phối trung tâm (central coodinator) chia nhỏ Web thành các phần (partition) và giao cho các C-proc

tiến hành crawl vào bất cứ lúc nào (dynamic). Trong quá trình crawl, bộ điều phối sẽ

quyết định sẽ crawl phần nào của Web tiếp theo (gửi URLs khởi đầu cho C-proc nào

đó). Ngay sau khi nhận được URLs khởi đầu, C-proc sẽ thực hiện crawl phần tương

ứng. Khi gặp một URL của phần khác C-proc báo lại URL này cho trung tâm điều

Static assignment: Không giống như dynamic assignment, các phần của Web (adsbygoogle = window.adsbygoogle || []).push({});

được giao cho các C-proc trước khi bắt đầu quá trình crawl. Như vậy mỗi C-proc biết

được C-proc nào đáp ứng cho trang nào trong quá trình crawl, do đó không cần phải

có bộ điều phối trung tâm.

1.5.3.3. Các tiêu chí chia phần Web

Trong các phương thức nêu trên, mỗi C-proc đều được giao nhiệm vụ crawl

một phần nào đó của Web. Làm thế nào để chia phần Web một cách hợp lý nhất là nội dung của phần nàỵ Sau đây là một số tiêu chí sử dụng để chia nhỏ Web thành các phần:

URL-hash based: Cho một URL nào đó, căn cứ vào giá trị hash tính toán được đối với URL này (giá trị hash được tính toán theo hàm hash) mà nó được giao cho một

C-proc nào đó thỏa mãn giá trị hash. Do tính giá trị hash của URL nên có thể dẫn đến

hiện tượng các trang Web của cùng một site được giao cho các C-proc khác nhau cũng

như xuất hiện nhiều liên kết ngoài (do các trang Web của cùng một site thường liên kết tới nhau).

Site-hash based: Thay vì tính giá trị hash dựa trên toàn bộ URL, các tính toán

được thực hiện trên trên tên site (ví dụ cnn.com thay vì http://cnn.com/index.html).

Với cách này thì số lượng các liên kết ngoài chỉ còn là liên kết từ site này sang site khác.

Hierachical: Không tính toán giá trị hash mà dựa trên cấu trúc phân cấp của Web, đó là ý tưởng của tiêu chí nàỵ Ví dụ như chúng ta chia phần Web thành ba phần (các domain dạng .net, dạng .com, và các dạng còn lại).

Một phần của tài liệu xây dựng một công cụ tìm kiếm thực sự (Trang 37 - 40)