Project Description
A small set of F# routines to support participating in a Spread network. It requires the 2009 May CTP (

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:
  1. A console application for joining and leaving groups, as well as sending messages to those groups.
  2. 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.
  3. A client application that subscribes the server application for its current state.

Last edited May 31, 2009 at 11:35 AM by ngunn, version 3