|
|
Erlang nodes can communicate over the network if they find each other. You can send a message to any process (differ from OS process) through its Pid – even if the process is on another node.
Although you don't have to know where processes are, it is still up to the erlang programmer to decide which node initially spawns a task on which node as there is no inherent way to make use of multiple nodes , even though they recognize each other & can message-pass between them.
Hence, this project attempts to load-balance the task of spawning tasks across multiple nodes . The steps involved can be isolated into a couple of distinct problems.
Steps
1. deciding which node needs to spawn a task 2. communicating across these nodes 3. maintaining a record of nodes, added /removed nodes ,etc
This project in its essence, deals with the first part and the implementation of the message passing begins with the "messenger.erl" program located at http://www.erlang.org/doc/getting_started/conc_prog.html and will be ported to different message-passing, load-balancing and node-information maintenance based on feedback,suggestions ,comments, and further changes inspired by the growing involvement of the erlang community & encouragement from #erlang in particular.
However, since the project is still in its early stages - better clarity & flexibility about which node takes load, but which node gets the result & how to communicate with least latency, is sought for.
For a fault-tolerant and inbuilt version provided within erlang , check the pool module
pool can be used to run a set of Erlang nodes as a pool of computational processors. It is organized as a master and a set of slave nodes and includes the following features:
* The slave nodes send regular reports to the master about their current load.
* Queries can be sent to the master to determine which node will have the least load.
src: http://erlang.org/doc/man/pool.htmlAlso online
http://code.google.com/p/bspawner/wiki/HowTo http://code.google.com/p/bspawner/wiki/TODO
Other interesting places
- http://erlang.org/doc/man/pool.html
- http://www.tornkvist.org/gitweb?p=mbrain.git;a=summary
- http://code.google.com/p/plists/
- http://www.erlang.org/doc/reference_manual/distributed.html
- http://eddie.sourceforge.net
- #erlang
More for information , ping ! bosky101 on #erlang and the web.
