(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!


In reply to RFC: Distributed/replicated TIEHASH and shared state algorithm with Corosync by dave_car

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.