Celem niniejszej pracy jest zaprojektowanie i zaimplementowanie systemu rejestrującego zmiany stron WWW. W pracy opisuję przyczyny powstania tego systemu oraz etapy analizy, projektowania i implementacji. Jednocześnie pokazuję także powstawanie biblioteki umożliwiającej przetwarzanie rozproszone -- będzie ona częścią całego systemu. Poszczególne etapy powstawania systemu zostały opisane w kolejnych rozdziałach pracy.
Rozdział 2. zawiera krótką analizę wykorzystania WWW przez ludzi, napotykanych problemów z uzyskiwaniem aktualnych treści oraz sposoby ich rozwiązania. Jest tam opisany przykładowy scenariusz działania użytkownika WWW oraz pokazany moment, w którym serwis powiadamiający o zmianach stron WWW staje się przydatny
W rozdziale 3. znajduje się analiza wymagań stawianych przed systemem. Ponieważ główny moduł systemu -- program sprawdzający strony -- jest rozproszony (potrzebę taką uzasadniam w punkcie 3.2), dalej w rozdziale omówione są wymagania stawiane przed systemem rozproszonym. Głównymi wymaganiami (i zaletami rozproszenia) są wydajność, skalowalność i odporność na błędy.
Rozdział 4. zawiera projekt systemu. Omówiłem w nim zastosowane technologie uzasadniając dokonane wybory. W kolejnych punktach rozdziału opisałem budowę systemu, projekt bazy danych, algorytm rozdzielania zadań pomiędzy węzły sieci, protokół komunikacji pomiędzy agentami a serwerem oraz sposób działania programu serwera głównego.
W rozdziale 5. omówiłem implementację systemu. Szczegółowo opisałem kilka najciekawszych aspektów implementacji. Jednym z nich było uniezależnienie szkieletu systemu od typu wykonywanych zadań (sprawdzania stron WWW). Dzięki takiemu podziałowi udało mi się wyodrębnić ogólną bibliotekę do rozdziału i rozproszonego przetwarzania zadań. Opisałem też między innymi sposób synchronizacji dostępu do tablic oraz metodę efektywnego sprawdzania stron WWW przy wykorzystaniu możliwości protokołu HTTP i algorytmu MD5. Dodatkowo pokazałem, jak wysyłanie poczty elektronicznej do użytkowników zostało w systemie potraktowane jako odrębny typ zadania.
System rozproszony, taki jak opisany w tej pracy, osiąga pełną wydajność dopiero po dostrojeniu -- ustawieniu odpowiednich parametrów algorytmu rozdzielającego zadania pomiędzy węzły sieci. Opis testów wydajnościowych i wynikającego z nich doboru parametrów umieściłem w rozdziale 6.
Rozdział 7. zawiera podsumowanie pracy. Umieściłem w nim moje wnioski sformułowane po zaimplementowaniu i uruchomieniu systemu. Opisałem także pomysły na rozszerzenie systemu oraz możliwości wykorzystania biblioteki do rozproszonego przetwarzania zadań powstałej w ramach realizacji projektu.
Pracę kończą dodatki oraz bibliografia. W dodatku A umieściłem przykładowy program wykorzystujący powstałą bibliotekę. Natomiast w dodatku B znajdują się skrypty tworzące bazę rzeczywistych adresów internetowych używanych przy testowaniu systemu.
Chciałbym w tym miejscu serdecznie podziękować mojemu opiekunowi naukowemu, dr Janinie Mincer-Daszkiewicz, za pomoc w przygotowaniu tej pracy oraz przesyłanie uwag i poprawek podczas jej powstawania.
Sebastian Łopieński