Home
Distrr © 2008 Oleg Andreev oleganza@gmail.com
MIT License.
Currently Disttr allows you to write distributed applications involving controller – single chosen server that controls a whole situation. Controller may be a master it self, it may spawn master or masters on demand.
Controller is only one to ensure that communication does not produce access conflicts. In some cases, controller is must, in some cases it helps to simply things a lot.
In instance, a distributed queue (N clients write, M clients read) may be implemented without a controller: every one pushes data (may be replicated) to some hosts. Readers read from all the hosts (e.g. with round-robin algorithm). Such system does not ensure that data won’t be lost. Controller can monitor the state of some limited number of machines and ensure, that lost machine won’t publish stale data when getting alive.
Distrr ensures that there is one and only one controller in a system. Every client can become a controller. When controller is unknown, clients go voting (using UDP broadcasting).
Currently, voting algorithm is not perfect. Synthetic high load test shows, that several computers may become a controllers (however, in the real world applications it is nearly not possible).
EventMachine 0.10.0 is a dependency. Prior versions don’t support UDP broadcasting.
See also http://en.wikipedia.org/wiki/Multi-agent_system
TODO:
1) better voting algorithm
2) capability to define a set of hosts to do a broadcasting within
3) more example applications

