Witam mam wielką prośbe do WAS. Proszę o wszelką pomoc na temat programowania rozproszonego w C++(Borland lub Visual). Był bym wdzięczny gdybyście mi w miare możliwości przysyłąli kody żródłowe programów wykonujących obliczenia poprzez siec . Prosiłbym także o zawarcie(w miare możliwości ) w nich wszystkich możliwych opisów gdyz jestem w zasadzie zielony z programowania. Potrzebna jest mi wszelka pomoc gdyz muszę wykonać w ramach pracy dyplomowej taki program. Mój adres mejlowy to [email protected]
skoro jestes zielony z programowania to gratuluje dobrego wyboru tematu pracy dyplomowej.
A co do pytania, to potrzebujesz:
serwera, zarzadzajacego podzialem zadan pomiedzy koncowki obliczeniowe i laczacego wyniki pracy w calosc
koncowek - prowadzacych jedynie obliczenia
Idea jest taka - serwer porcjuje problem na mniejsze pakiety i rozsyla je do koncowek, ktore to licza, kazda swoja paczke, odsylaja wynik do serwera, ktory montuje to i wysyla nastepne porcje danych do obliczen.
przyklad:
obliczenie liczb pierwszych z zakresu 3-10000000000000000000000000
serwer dzili to na mniejsze pakiety danych np. zawierajece po 100 liczb i wysyla do koncowek. One obliczaja liczby pierwsze z zadanego zakresu i odsylaja wyniki. I tak do momentu kiedy skonczy sie zakres liczb wejsciowych
Tak w duuuzym uproszczeniu.
Tez gratuluje wyboru pracy dyplomowej, ale skoro juz wybrales to trudno.
Przede wszystkim musisz zaprojektowac najpierw architekture systemu:
dobrac zadania do poszczegolnych maszyn, dobrac odpowiedni
zestaw algorytmow, ustalic protokoly. Anubis podal jeden przyklad systemu rozproszonego
do obliczen (tak naprawde czesciowo rozproszonego), jednak podzial
zadan pomiedzy poszczegolne wezly i sposob komunikacji jest zalezny
od tego "co to ma robic".
Jak juz zaprojektujesz system to musisz sie zdecydowac na jakas okreslona
technologie. Skoro to ma byc C++ to mozesz wybrac:
- zwykle gniazdka (duza wydajnosc, ale kiepsko sie programuje)
- RPC (nie polecam - tez niezbyt wygodne, ale i tak lepsze niz gniazdka)
- CORBA (troche malo wydajne, ale za to ma baardzo duzo funkcji i implementacje
dzialaja w wielu jezykach, nie tylko w C++; nauka zajmuje niestety dluzej) - SOAP (jeszcze mniej wydajne niz CORBA, ale bardzo przyjemnie sie w tym pisze)
Mozesz jeszcze rozwazyc zastosowanie gotowych komponentow takich jak
np. monitor transakcyjny (BEA Tuxedo).
Jesli robilbys w Javie to polecam RMI (mozna sie nauczyc w 1 dzien).