Kiến trúc khảo duyệt Apoidea

Một phần của tài liệu Sử dụng thông tin gần kề vị trí trong khảo duyệt Web theo phương thức mạng ngang hàng (Trang 37)

Hệ thống Apoidea gồm một số nút trên WWW. Nhƣ đã trình bày ở phần trƣớc, mỗi nút chịu trách nhiệm về một phần của web. Trong phần này, đầu tiên báo cáo luận văn đề cập đến cách thức thực hiện phân chia công việc và cách xử lý kiểm tra trùng lặp trên hệ thống Apoidea. Sau đó chúng tôi mô tả tóm tắt kiến trúc mạng ngang hàng trong hệ thống Apoidea, đặc biệt là quá trình thành lập nên các nút thành viên và quá trình tạo thành mạng từ các nút tham gia, và kiến trúc nút đơn lẻ trong Apoidea, bao gồm cách thức mỗi nút tham gia vào trong quá trình khảo duyệt web Apoidea và thực hiện công việc khảo duyệt mà đã đƣợc phân công.

Phân chia công việc: nhƣng đã trình bày ở phần trên, Apoidea sử dụng hệ thống dựa trên DHT để phân phối không gian WWW giữa các nút trên mạng. Nút P chịu trách nhiệm về tất cả URL có tên miền băm thuộc nút đó. Trong Apoidea, tác giả cấu hình chính sách về khu vực, điều này sẽ đƣợc mô tả rõ hơn trong hình 13. Giả sử rằng có 3 nút trong hệ thống, nút A, B và C. Địa chỉ IP của chúng đƣợc băm thành m không gian bit, và do đó sẽ xác định có ba điểm trên vòng định danh. Sau đó nhiều tên miền cũng đƣợc băm vào không gian này và chúng cũng sẽ giữ một số vị trí trong không gian đó. Nút A sẽ chịu trách nhiệm không gian giữa nút C và chính nó. Nút B phụ trách không gian giữa nút A và B và nút C chịu trách nhiệm trên phần còn lại tức giữa C và B. Theo hình 10, nút A quản lý miền www.gatech.edu. Do đó, nút A sẽ chỉ thực hiện khảo duyệt trên tất cả địa chỉ URL thuộc tên miền này. Nếu có bất kỳ nút nào khác trong quá trình thu thập gặp các địa chỉ URL thuộc về tên miền này, có sẽ tập hợp các địa chỉ URL lại và định kỳ gửi chúng đến cho nút A. Tuy nhiên, việc gán ngẫu nhiên các địa chỉ URL với các nút không dùng để khai thác thông tin có vị trí địa lý gần nhau. Để đảm bảo rằng tên miền đƣợc khảo duyệt bởi một nút láng giềng, cần thực hiện ánh xạ một tên miền

với một nút theo các bƣớc sau. Mọi nút P duy trì một danh sách các nút lá mà các nút này gần với nút P trong không gian định danh. Theo giao thức Chord, nút P duy trì tới l/2 các nút kế tiếp và l/2 nút liền kế trƣớc đó theo định danh trong vòng. Giờ đây, khi nút P đƣợc gán với miền D, nó sẽ lựa chọn nút lá gần miền D nhất chuyển tiếp lô URL về để thực hiện khảo duyệt web. Trong ví dụ hình 10, nút A chịu trách nhiệm tên miền www.gatech.edu, nút B trong quá trình khảo duyệt bắt gặp các địa chỉ URL www.gatech.edu/research, www.gatech.edu/people, www.gatech.edu, www.gatech.edu/project, nút B kiểm tra thấy các URL này thuộc tên miền mà nút A quản lý, nút B sẽ đóng lô gồm 3 địa chỉ URL này gửi đến cho nút A thực hiện khảo duyệt. Nút A sẽ không khảo duyệt ngay mà tìm nút tốt nhất trong vòng định danh l/2 nút liền trƣớc và l/2 nút tiếp theo để tìm nút có khả năng khảo duyệt tốt nhất. Nút khảo duyệt tốt nhất đó mới thực sự khảo duyệt các URL thuộc tên miền này.

Hình 10. Phân chia công việc trong Apoidea

Kiểm tra sự trùng lặp: giả thiết rằng nút P quản lý tên miền D và nút Q là nút lá của nút P, nút P đóng vai trò chính trong việc khảo duyệt tên miền D. Khi có bất kỳ nút bắt gặp một địa chỉ URL thuộc tên miền D, nó sẽ gửi địa chỉ URL tới cho nút P vì nút P quản lý tên miền D. Giờ đây, nút P đóng lô các địa chỉ URL thuộc tên miền D và chuyển tiếp chúng tới nút Q. Nút Q duy trì một bộ lọc bloom nhằm nhận biết URL nào đã đƣợc khảo duyệt trƣớc đó chƣa. Nếu địa chỉ URL trên thực tế đã đƣợc khảo duyệt thì nó sẽ bỏ qua địa chỉ này, ngƣợc lại địa chỉ này sẽ đƣợc thêm vào trong danh sách Crawl-job của nút Q và sẽ đƣợc khảo duyệt sau đó.

Để kiểm tra các trang web bị trùng lặp, cần thực hiện băm nội dung trang web và ánh xạ vào không gian định danh và sau đó phân bố chúng trên nhiều nút trong mạng. Hình vẽ 11 là một ví dụ. Nội dung trang web

www.gatech.edu/research đƣợc băm ra kết quả đƣa lên vòng, và thuộc phạm vi nút C quản lý địa chỉ này. Lƣu ý rằng trang này có thể đƣợc khảo duyệt bởi nút A vì tên miền www.gatech.edu cũng có giá trị băm thuộc phạm vi nút A quản lý.

Hình 11. Kiểm tra trùng lặp nội dung trong Apodiea

Khi nút A bắt gặp trang web này, nó cần kiểm tra lại dù trang này có bị trùng lặp hay không. Vì vậy, nút A tìm kiếm giá trị băm của nội dung trang web và tìm thấy nút C chịu trách nhiệm về trang này, do đó nút A sẽ nhờ nút C kiểm tra thông tin nội dung trang web này có bị trung lặp không. Lúc đó nút A có thể gửi cả lô toàn bộ yêu cầu và định kỳ vấn tin nút C về các thông tin mới đƣợc cập nhật tại nút C. Sau đó nút C có thể gửi lại các phản hồi theo lô cho nút A. Nó cũng có thể chỉnh sửa danh sách Seen-Content của mình để chú thích những trang web mới mà nút A tải về. Lƣu ý rằng độ trễ khi lấy thông tin về tính trùng lặp trang web không ảnh hƣởng đến hiệu suất mạng vì cũng có độ trễ là đáng kể khi tải và xử lý một trang web cụ nào đó. Điều này là do tốc độ tải dữ liệu thƣờng nhanh hơn nhiều so với tốc độ xử lý và kết quả là quá trình xử lý có độ trễ đáng kể từ sau lúc tải dữ liệu về.

2.3.2 Các thành phần của Apoidea

Các nút trong hệ thống Apoidea là các máy của ngƣời dùng trên Internet mà đang duyệt web đƣợc dùng để thu thập dữ liệu. Các nút này đóng vai trò là cả client lẫn server trong nhiệm vụ thực hiện khảo duyệt web. Một việc khảo duyệt URL có thể đƣợc tung ra bởi bất kỳ nút nào trong hệ thống. Không có lịch trình của nút nào trong hệ thống cũng nhƣ không có bất kỳ nút nào biết hết toàn bộ mô hình của hệ thống. Có ba yếu tố chính để tạo nên hệ thống mạng ngang hàng Apoidea.

1. Nút thành viên: yếu tố đầu tiên là nút thành viên trên toàn mạng bao phủ. Các nút thành viên cho phép các nút trao đổi trực tiếp với các nút khác để phân phối nhiệm vụ hoặc trao đổi thông tin. Một nút mới có thể gia nhập vào

hệ thống Apoidea bằng cách liên hệ với một nút trong hệ thống mạng Apoidea. Có một số phƣơng pháp bootstrapping để xác định một nút mới gia nhập. Giả thiết rằng dịch vụ Apoidea có liên kết với một tên miền DNS. DNS sẽ chịu trách nhiệm xử lý ánh xạ tên miền Apoidea với địa chỉ IP của một hoặc nhiều nút bootstrapping Apoidea. Một nút bootstrapping duy trì một danh sách các nút Apoidea hiện đang có trong hệ thống. Để gia nhập vào hệ thống Apoidea để khảo duyệt web, một nút mới tìm kiếm tên miền Apoidea trên hệ thống DNS để lấy đƣợc địa chỉ IP của nút bootstraping. Nút boostrapping chọn ngẫu nhiên một số nút xin gia nhập từ danh sách nút và cung cấp địa chỉ IP của nút đó. Để liên hệ đƣợc với nút mới gia nhập trong hệ thống Apoidea, nút mới kết nạp vào hệ thống thông qua thủ tục khởi tạo của giao thức Apoidea.

2. Giao thức: yếu tố thứ hai là giao thức của Apoidea, bao gồm việc phân vùng công việc khảo duyệt web và thuật toán tìm kiếm. Trong Apoidea mọi nút đều tham gia quá trình khảo duyệt web, và một nút bất kỳ có thể thông báo địa chỉ URL mới đã đƣợc khảo duyệt. Khi một địa chỉ URL mới vô tình đƣợc thu thập bởi một nút bất kỳ, thì đầu tiên nút này sẽ xác định nút nào chịu trách nhiệm khảo duyệt URL này. Điều này có đƣợc thông qua hoạt động tìm kiếm đƣợc cung cấp trong giao thức Apoidea. Giao thức Apoidea có một số bƣớc tƣơng tự với giao thức Chord [3]. Có ba điều quan trọng trong sự phối hợp của các nút: (1) làm thế để tìm đƣợc các nút có khả năng khảo duyệt địa chỉ URL biết trƣớc tốt nhất, (2) làm thế nào để các nút mới gia nhập vào hệ thống, và (3) làm thế nào Apoidea quản lý lỗi hoặc việc rời khỏi hệ thống của các nút hiện có hệ thống. Một tính năng độc đáo của giao thức này là khả năng tính toán phân phối nhanh chóng của hàm băm, ánh xạ công việc khảo duyệt URL với các nút chịu trách nhiệm tƣơng ứng với các URL.

3. Khảo duyệt: yếu tố thứ ba là quá trình xử lý các yêu cầu khảo duyệt URL. Mỗi việc khảo duyệt URL đƣợc phân công cho một nút với ánh xạ định danh với tên miền URL. Dựa trên tiêu chí ánh xạ định danh, các URL đƣợc khảo duyệt tại các nút phụ trách chúng và đƣợc chuyển hoàn toàn tới các nút khác các nút phụ trách bị lỗi hoặc do sự vào/ra khỏi hệ thống của nút. Từ quan điểm của ngƣời dùng, mỗi nút trong mạng ngang hàng cần đƣợc trang bị cùng với middleware Apoidea, một hệ thống phần mềm ở tầng thứ hai. Tầng thấp là tầng giao thức Apoidea chịu trách nhiệm kết nối giữa các nút với nhau. Tầng cao hơn là hệ thống khảo duyệt web chịu trách nhiệm thu thập các địa chỉ URL đƣợc phân công, giải quyết các URL Last-seen để tránh bị

khảo duyệt trùng, và xử lý các trang đã đƣơc khảo duyệt. Bất kỳ yêu cầu khảo duyệt một ứng dụng nào đểu có thể kết hợp với tầng này.

Phần tiếp theo đề cập đến phần giữa của kiến trúc Apoidea đƣợc thiết kế chạy trên tất cả nút Apoidea.

2.2.1 Kiến trúc hệ thống tại một nút Apoidea

Kiến trúc hệ thống Apoidea áp dụng cho mọi nút đƣợc tạo từ ba phần chính nhƣ sau:

1. Lƣu trữ: thành phần này gồm tất cả kho dữ liệu mà mỗi nút cần duy trì 2. Worker: thành phần này gồm các module thực hiện lấy các trang từ WWW

và xử lý chúng để chiết xuất các trang ra nhiều địa chỉ URL.

1. Giao diện: thành phần này tạo nên giao diện của mỗi nút tham gia, quản lý việc truyền thông trong mạng Apoidea.

Kiến trúc hoàn chỉnh của Apoidea đƣợc chỉ trong hình 12

Hình 12. Kiến trúc hệ thống tại một nút Apoidea

Thành phần lƣu trữ: gồm nhiều kho dữ liệu đƣợc duy trì trong mỗi nút, bao gồm các thành phần con sau:

- Crawl-Job: là danh sách các địa chỉ URL chƣa đƣợc khảo duyệt. Các địa chỉ URL gửi theo lô tới các nút chịu trách nhiệm khảo duyệt. Hệ thống duy trì

danh sách này giống nhƣ bảng băm cùng với tên miền theo khoá và các URL với giá trị tƣơng ứng.

- Processing-Job: là danh danh sách các trang đã tải về mà chƣa đƣợc xử lý. Danh sách này chỉ là vector chỉ tới các trang web. Sau khi đạt tới một số lƣợng trang tải về nhất định, danh sách này sẽ đƣợc lƣu trữ trên ổ đĩa.

- Seen-URL: là danh sách các URL đã đƣợc khảo duyệt. Danh sách này đƣợc sử dụng để ngăn chặn việc khảo duyệt lại URL tƣơng tự. Apodiea duy trì danh sách này bằng cách sử dụng bộ lọc bloom.

- Seen-Content: là danh sách chữ ký trang web (giá trị băm của trang web), các trang này có thể đã đƣợc một số nút trên khảo duyệt. Điểm quan trọng ở đây là chú ý về kho dữ liệu của nút là kho dữ liệu bao gồm nhiều chữ ký trang web mà nút này chịu trách nhiệm và không phải là các trang mà nó tải về. Một lần nữa, sử dụng bộ lọc bloom đối với kho dữ liệu để xử lý vấn đề trùng lặp nội dung của nội dung trang web.

- Bảng định tuyến (routing table): đƣợc sử dụng để định tuyến các truy vấn tìm kiếm tới đúng nút và nó gồm thông tin về một số lƣợng nhỏ các nút trọng hệ thống [3]. (adsbygoogle = window.adsbygoogle || []).push({});

Điểm phức tạp lớn nhất trong thành phần này là lựa chọn kho dữ liệu, vì khảo duyệt web dẫn tới sự gia tăng khá lớn về tài nguyên, đặc biệt là bộ nhớ. Danh sách Crawl-Job và Processing-Job thƣờng dễ dàng duy trì vì chúng có một số bộ downloader và extractor hoạt động. Bảng định tuyến cũng có kho dữ liệu rất nhỏ. Yêu cầu chính là quản lý hiệu quả kho dữ liệu Seen-URL và See-Content. Kho dữ liệu tăng lên về kích thƣớc cùng theo thời gian.

Đề duy trì kho dữ liệu, tác giả [3] sử dụng bộ lọc bloom. Giả sử rằng WWW có khoảng 4 tỷ trang web. Mỗi tên miền có khoảng 4K địa chỉ URL. Do đó, số lƣợng tên miền trên WWW sẽ khoảng 1 triệu. Giả sử rằng hoạt động khảo duyệt của các nút là 1K, mỗi nút khảo duyệt khoảng 1K tên miền. Mỗi tên miền sẽ duy trì một bộ lọc bloom cho dù URL trong tên miền đó đã đƣợc khảo duyệt rồi hay chƣa. Cần chú ý rằng trên thực tế các bộ lọc bloom chiếm khoảng 4K URL, chọn kích thƣớc bộ lọc bloom là 8KB vì thế xác suất bị lỗi sẽ ở mức thấp hơn một trên một nghìn (sử dụng công thức trong phần trên và = 8KB = 64K bit = 16 * 4K URL).

Mọi nút duy trì bộ lọc bloom có kích thƣớc là 8MB (8KB trên một tên miền * 1K tên miền trên một nút). Các nút cũng duy trì sự gắn kết giữa tên miền và bộ lọc bloom của mình trong bảng băm.

Quan sát thấy trên thực tế kích thƣớc trung bình của một URL là 80B và bảng băm cần quản lý 1K kích thƣớc entry (1K tên miền) của bảng băm sẽ khoảng 80KB.Việc duy trì trên các bộ lọc bloom là cần thiết để quản lý việc gia nhập và dời khỏi hệ thống. Chú ý rằng mọi nút đều đƣợc chỉ định quản lý một số tên miền. Do đó, khi một nút mới gia nhập có thể xây dựng bộ lọc bloom cho tên miền đƣợc phân công bằng cách đơn giản là copy bộ lọc bloom từ nút mà trƣớc đó quản lý tên miền này.

Chú ý rằng việc sử dụng bộ lọc giúp tránh đƣợc việc lƣu trữ tất cả các URL đã đƣợc xem trong bộ nhớ. Trên thực tế, hệ thống Mercator [6] sử dụng cách tiếp cận này để lƣu trữ toàn bộ địa chỉ URL trong tên miền mà đang đƣợc khảo duyệt trong bộ nhớ chính của mình. Tuy nhiên, theo báo cáo của Mercator thì tỷ lệ tìm đƣợc chỉ đạt 75%, trong đó đảm bảo một số thao tác vào ra I/O ổ đĩa tốn kém. Nhƣ vậy thao tác vào ra đĩa tốn kém có thể phù hợp khi nút là nút thành viên mới tham gia khảo duyệt.

Worker: thành phần này gồm hai tập luồng: Downloader và Extractor. 1. Downloader: luồng downloader chọn một tên miền từ danh sách Crawl-Job và

truy vấn hàng xóm trong danh sách hàng xóm của mình để tìm ra nút nào có thể khảo duyệt tên miền này nhanh nhất. Điều này có thể thực hiện qua việc trao đổi thông điệp rất ngắn cùng với việc mỗi nút đo thời gian phản hồi (round trip time) cho đến khi tới đƣợc tên miền. Nếu nút này không phải là nút có khả năng khảo duyệt nhanh nhất, nó chỉ việc chuyển các địa chỉ URL tới hàng xóm có thể khảo duyệt tên miền đó một cách nhanh nhất. Thông thƣờng, điều này hay xảy ra vì các nút hàng xóm gần nhau về mặt địa lý với tên miền sẽ đƣợc khảo duyệt do nút khảo duyệt và tên miền cùng thuộc vùng địa lý thì có thời gian khảo duyệt nhanh. Theo các thử nghiệm ban đầu của tác giả [1] cho thấy, việc chọn nút hàng xóm tốt nhất để khảo duyệt có thể là một nhân tố quan trọng ảnh hƣởng đến tổng tốc độ khảo duyệt trên toàn WWW.

Giao thức Robot Exclusion (hay giao thức robot.txt, là quy ƣớc chuẩn dùng để

Một phần của tài liệu Sử dụng thông tin gần kề vị trí trong khảo duyệt Web theo phương thức mạng ngang hàng (Trang 37)