(updated for clarity)
I've been working on a Closed Process Group/Virtual Synchrony algorithm to provide a shared state/initial state transfer implementation in Perl. It is not yet a fully fledged module, but prior to that any input anyone may have on the best way to develop it would be welcome.
As an example of what it can do I've made a networked multi-master tied hash example. Basically, run a "server" instance on each node in a cluster and (UNIX domain socket) clients can see all the data which other nodes have entered.
Hashes are kept strictly in sync with each other and the data is resilient until all nodes in the cluster have failed (quorum can be added of course).
For example nodes 1 and 2 could concurrently access a shared hash:
node1: printf "> %s", $a{'hello'}
node1: >
node2: $a{'hello'} = "world"
node2: printf "> %s", $a{'hello'}
node2: > world
node1: printf "> %s", $a{'hello'}
node1: > world
Also there's a more dynamic example which emulates Hypervisor nodes managing VM resources - automatically reallocting VMs when an HV goes out of service or comes back in.
Any application which requires nodes in a cluster to have a timely view of the whole cluster state could benefit from this approach.
POD docs are available in the demo scripts over at https://github.com/davidcoles/bogart
If anyone is working on anything similar or might find this work useful then please feel free to get in touch!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: RFC: Distributed/replicated TIEHASH and shared state algorithm with Corosync
by zentara (Cardinal) on Dec 29, 2013 at 11:41 UTC | |
by dave_car (Novice) on Dec 30, 2013 at 15:02 UTC |