Project DescriptionA small set of F# routines to support participating in a Spread network. It requires the 2009 May CTP (1.9.6.16)
Spread is an open source toolkit that provides a high performance messaging service that is resilient to faults across local and wide area networks. It has a client-daemon architecture, with most of the functionality implemented in the Spread daemon and a simple tcp-based protocol for communication with clients.
By providing consistent, ordered and reliable membership messages to processes participating in a network, those processes can implement truly-distributed algorithms for fault-tolerance, load-balancing and leader-election, without further agreement/consensus protocols.
This project provides an F# implementation of the Spread client-side protocol, allowing F# projects to participate in a Spread network.
The sample projects provided include:
- A console application for joining and leaving groups, as well as sending messages to those groups.
- A server application that may have many instances, each agreeing on who is the leader, with the remaining replicating that state. Instances may come and go. The server demonstrates how a new leader may be elected in the event of the previous one failing. The server supports client subscriptions and load-balances these amongst the leader/replicas. Client subscriptions are migrated to new nodes in the event of node failures.
- A client application that subscribes the server application for its current state.