问题
I am a student of faculty of Cybernetics and I want to write one project using Java. I want to create system for distributed computing.
It will contains next components:
1. User's main program (different for each concrete situation)
2. User's task program, that can only solve some little task (also different for each case)
3. My program, that will interact with user's main program to know, which tasks are needed to be solved
4. My program, that will interact with user's task program to tell it input data and get output data
5. Apache Tomcat and my servlets + database, all this will allow next things:
- register main program and calculations node in system
- save in DB tasks from main program, save task results, that will be sent from nodes
- see some statistic information (how many tasks are solved, how many nodes in system and so on)
Please tell me some ideas about designing this system. I also want to know, how can my java program interacts with user's program on local machine (i mean data exchanging).
p.s. thank you, sorry for my English and remember, that i want to write my own system (so i can't use existing solutions)
回答1:
Read up on Linda and JavaSpaces. Then read up on Apache Hadoop and MapReduce. That should give you some ideas for the ways these things can be tackled.
回答2:
Have a look at the Java Remote Method Invocation Tutorial to understand the nuts and bolts of distributed programming.
http://download.oracle.com/javase/tutorial/rmi/index.html
回答3:
For learning concepts, I'd recommend studying how Hadoop works. You'll learn a ton!
回答4:
The speed of your networked system will depend primarily on how autonomous each node is (ie, reliance on new data), and how even the distribution of processes are. It's my belief that your solution will resemble the multiprocessing model through necessity.
来源:https://stackoverflow.com/questions/4618397/how-can-i-create-system-for-distributed-calculations