Jestem studentem wydziału Cybernetyki i chcę napisać jeden projekt z wykorzystaniem Java. Chcę stworzyć system do przetwarzania rozproszonego.
Będzie zawierać kolejne składniki:
1. Główny program użytkownika (inny dla każdej konkretnej sytuacji)
2. Program zadania użytkownika, który może rozwiązać tylko niewielkie zadanie (również inne dla każdego przypadku)
3. Mój program, który będzie współdziałał z głównym programem użytkownika, aby wiedzieć, które zadania należy rozwiązać 4. Mój program, który będzie współdziałał z programem zadań użytkownika, aby przekazać dane wejściowe i uzyskać dane wyjściowe 5. Apache Tomcat i moja serwlety + baza danych, wszystko to pozwoli na następne rzeczy:
- zarejestruj główny program i węzeł obliczeń w systemie
- zapisać w zadaniach DB z programu głównego, zapisać wyniki zadania, które zostaną wysłane z węzłów
- zobacz informacje statystyczne (ile zadań zostało rozwiązanych, ile węzłów w systemie itd.)
Proszę mi powiedzieć kilka pomysłów dotyczących projektowania tego systemu. Chcę też wiedzieć, jak mój program Java może współdziałać z programem użytkownika na lokalnym komputerze (mam na myśli wymianę danych).
p.s. dziękuję, przepraszam za mój angielski i pamiętam, że chcę napisać własny system (więc nie mogę „użyć istniejących rozwiązań”)
Odpowiedzi:
2 dla odpowiedzi № 1Czytaj dalej Linda i JavaSpace. Potem czytaj dalej Apache Hadoop i MapReduce. To powinno dać ci kilka pomysłów na sposoby radzenia sobie z tymi rzeczami.
0 dla odpowiedzi nr 2
Zapoznaj się z samouczkiem Java Remote Method Invocation Tutorial, aby poznać podstawy programowania rozproszonego.
http://download.oracle.com/javase/tutorial/rmi/index.html
0 dla odpowiedzi № 3
W przypadku koncepcji uczenia się polecam studiowanie Hadoop Prace. Nauczysz się tony!
0 dla odpowiedzi nr 4
Szybkość systemu sieciowego zależyprzede wszystkim o tym, jak autonomiczny jest każdy węzeł (tj. poleganie na nowych danych), a także jak rozkładają się procesy. Jestem przekonany, że twoje rozwiązanie z konieczności będzie przypominało model wieloprocesowy.