Crate plumcast[][src]

A message broadcasting library based on the Plumtree/HyParView algorithms.

Properties

Pros

  • Nearly optimal message transmitting count
    • Usually messages are broadcasted via a spanning tree
    • Only the nodes interested in the same messages belong to the same cluster
  • Scalable
    • Theoretically, it can handle ten-thousand of nodes or more
  • High fault tolerance
    • Spanning trees are automatically repaired if there are crashed nodes
  • Dynamic membership
    • Nodes can be added to (removed from) a cluster at any time

Cons

  • No strong guarantee about connectivity of the nodes in a cluster
  • No strong guarantee about delivery count of a message
  • No guarantee about messages delivery order

If some of the above guarantees are mandatory for your application, it is need to be provided by upper layers.

References

Modules

metrics

Prometheus metrics.

Structs

Clock

Node local clock.

Error

This crate specific Error type.

LocalNodeId

Identifier used for distinguish local nodes in a process.

Message

Broadcasted application message.

MessageId

Message identifier.

Node

Node that broadcasts and receives messages.

NodeBuilder

The builder of Node.

NodeId

Identifier used for distinguish nodes in a cluster.

PlumtreeSystem

An implementation of plumtree::System trait specialised to this crate.

Service

A Future that executes management tasks needed for running a plumcast system.

ServiceBuilder

The builder of Service.

ServiceHandle

A handle of a Service instance.

Enums

ErrorKind

Possible error kinds.

Traits

MessagePayload

This trait allows the implementations to be used as the payload of broadcasting messages.

Type Definitions

HyparviewNode

HyParView node.

HyparviewNodeOptions

Options for HyParView nodes.

PlumtreeNode

Plumtree node.

PlumtreeNodeOptions

Options for Plumtree nodes.

Result

This crate specific Result type.