om-legion: Legion Framework.

[ library, mit, network ] [ Propose Tags ] [ Report a vulnerability ]

Framework for managing shared, replicated state across a number of homogeneous nodes.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 6.9.0.3, 6.9.0.4, 6.9.0.5, 6.9.0.6, 6.9.0.7
Dependencies aeson (>=2.2.1.0 && <2.3), async (>=2.2.5 && <2.3), base (>=4.19.0.0 && <4.21), binary (>=0.8.9.1 && <0.9), bytestring (>=0.12.0.2 && <0.13), clock (>=0.8.4 && <0.9), containers (>=0.6.8 && <0.8), crdt-event-fold (>=1.8.1.0 && <1.9), data-default-class (>=0.1.2.0 && <0.2), http-api-data (>=0.6 && <0.7), monad-logger (>=0.3.40 && <0.4), mtl (>=2.3.1 && <2.4), network (>=3.1.4.0 && <3.3), om-fork (>=0.7.1.9 && <0.8), om-logging (>=1.1.0.8 && <1.2), om-show (>=0.1.2.9 && <0.2), om-socket (>=1.0.0.0 && <1.1), om-time (>=0.3.0.4 && <0.4), random-shuffle (>=0.0.4 && <0.1), safe-exceptions (>=0.1.7.4 && <0.2), stm (>=2.5.2.1 && <2.6), streaming (>=0.2.4.0 && <0.3), text (>=2.1 && <2.2), time (>=1.12.2 && <1.13), transformers (>=0.6.1.0 && <0.7), unliftio-core (>=0.2.1.0 && <0.3), uuid (>=1.3.15 && <1.4) [details]
License MIT
Copyright 2022 Owens Murray, LLC.
Author Rick Owens
Maintainer rick@owensmurray.com
Category Network
Home page https://github.com/owensmurray/om-legion
Uploaded by rickowens at 2024-08-13T13:44:28Z
Distributions
Downloads 224 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for om-legion-6.9.0.7

[back to package description]

om-legion

Legion is framework for building clusters of homogenous nodes that must maintain a shared, replicated state.

For instance, maybe in order to scale a service you are using a partitioning strategy to direct traffic for users A-H to node 1, users I-Q to node 2, and R-Z to node 3. The partition table itself is something all the nodes have to agree on and would make an excellent candidate for the "shared, replicated state" managed by this framework.

To update the shared state, whatever it is, use:

  • applyFast
  • or applyConsistent

Additionally, since Legion already has to understand about different nodes in the cluster, and how to talk to them, we provide a variety of tools to help facilitate inter-node communication:

  • cast: We support sending arbitrary messages to other peers without waiting on a response.

  • call: We support sending requests to other peers that block on a response.

  • broadcast: We support sending a message to every other peer without waiting on a response

  • broadcall: We support sending a request to every other peer, and blocking until we recieve a response from them all.