Expand description
Cluster layer: pools, peers, datacenters, racks, gossip,
snitch, vnode dispatch, and the cluster-aware
Dispatcher implementation.
This module owns the cluster-wide data structures (the server
pool plus the peer/dc/rack arrays). It is the seam between the
per-connection state machines from crate::net (which only
know about a single peer) and the routing logic that decides
which peers receive a given request.
Public surface:
peer::Peer/peer::PeerState- per-peer record.datacenter::Datacenter/datacenter::Rack- topology.vnode::dispatch- token ring lookup.snitch- rack-distance helpers.pool::ServerPool- cluster-wide owner.gossip::GossipState/gossip::GossipConfig- gossip bookkeeping.dispatch::ClusterDispatcher- thecrate::net::Dispatcherimplementation that replacescrate::net::NoopDispatcherfor production wiring.
§Examples
use dynomite::cluster::peer::{Peer, PeerEndpoint};
use dynomite::hashkit::DynToken;
let p = Peer::new(
0,
PeerEndpoint::tcp("127.0.0.1".into(), 8101),
"rack1".into(),
"dc1".into(),
vec![DynToken::from_u32(1)],
true,
true,
false,
);
assert_eq!(p.dc(), "dc1");Re-exports§
pub use self::admin_rpc::ClusterAdmin;pub use self::admin_rpc::ClusterChange;pub use self::admin_rpc::ClusterChangeKind;pub use self::admin_rpc::ClusterError;pub use self::admin_rpc::JoinPlan;pub use self::admin_rpc::NoopClusterAdmin;pub use self::admin_rpc::PeerSnapshot;pub use self::admin_rpc::PeerSpec;pub use self::admin_rpc::PoolClusterAdmin;pub use self::apl::get_apl_ann;pub use self::apl::AnnotatedPeer;pub use self::apl::NodeRole;pub use self::datacenter::Continuum;pub use self::datacenter::Datacenter;pub use self::datacenter::Rack;pub use self::dispatch::map_hash;pub use self::dispatch::ClusterDispatcher;pub use self::dispatch::DispatchPlan;pub use self::dispatch::ReplicaTarget;pub use self::gossip::parse_seed_node;pub use self::gossip::GossipConfig;pub use self::gossip::GossipHandler;pub use self::gossip::GossipNode;pub use self::gossip::GossipState;pub use self::gossip::GossipStep;pub use self::gossip::SeedRecord;pub use self::hints::Hint;pub use self::hints::HintStore;pub use self::hints::HintStoreError;pub use self::hints::HintStoreOpenError;pub use self::hints::HintStoreStats;pub use self::peer::Peer;pub use self::peer::PeerEndpoint;pub use self::peer::PeerState;pub use self::pool::PoolConfig;pub use self::pool::ServerPool;pub use self::snitch::rack_distance;pub use self::snitch::RackDistance;pub use self::swim::Incarnation;pub use self::swim::Member;pub use self::swim::ProbeResult;pub use self::swim::Status;pub use self::swim::SwimConfig;pub use self::swim::SwimHandler;pub use self::swim::SwimState;pub use self::swim::Tick;pub use self::swim::Update;pub use self::vnode::dispatch as vnode_dispatch;pub use self::vnode::rebuild_continuums;pub use self::vnode::PeerTokens;
Modules§
- admin_
rpc - Cluster admin RPC surface.
- apl
- Active preference list (APL) annotations for the vnode walker.
- capability
- Cluster-wide capability negotiation.
- coverage
- Token-ring coverage validation.
- datacenter
- Cluster topology: datacenters, racks, and the per-rack token continuum.
- dispatch
- Cluster-aware
Dispatcher. - failure_
detector - Phi-accrual failure detector.
- gossip
- Gossip state machine and seed-list bookkeeping.
- hints
- Node-local hinted-handoff store.
- peer
- Cluster peer state.
- pool
- Server pool owner.
- snitch
- Node snitch: environment-driven address resolution and rack proximity helpers.
- swim
- SWIM + Lifeguard membership and failure detection.
- vnode
- Token ring math: building and querying per-rack continuums.