Raxol.Core.Session.SessionReplicator (Raxol v2.0.1)
View SourceHandles session replication and synchronization across nodes in a distributed cluster.
The SessionReplicator ensures session data consistency across multiple nodes by managing replication, conflict resolution, and synchronization of session state.
Features
- Asynchronous session replication across replica nodes
- Conflict-free replicated data types (CRDTs) for session merging
- Vector clocks for ordering and conflict detection
- Configurable replication factor and consistency levels
- Anti-entropy mechanisms for drift correction
- Partition tolerance with eventual consistency
Replication Strategies
- Immediate: Synchronous replication to all replicas
- Eventual: Asynchronous replication with eventual consistency
- Quorum: Write to majority of replicas before confirming
- Best Effort: Fire-and-forget replication
Usage
# Start replicator
{:ok, pid} = SessionReplicator.start_link(
replication_factor: 3,
consistency_level: :quorum
)
# Replicate session data
SessionReplicator.replicate_session(pid, session_id, session_data, replica_nodes)
# Sync session across replicas
SessionReplicator.sync_session(pid, session_id)
Summary
Functions
Returns a specification to start this module under a supervisor.
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_call/3.
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_cast/2.
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_info/2.
Types
@type consistency_level() :: :strong | :eventual | :quorum | :weak
@type replication_strategy() :: :immediate | :eventual | :quorum | :best_effort
@type session_version() :: {vector_clock(), term()}
@type vector_clock() :: %{required(node()) => non_neg_integer()}
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec get_replication_status(pid()) :: %{ pending_replications: non_neg_integer(), replica_health: %{required(node()) => :healthy | :degraded | :failed}, sync_conflicts: non_neg_integer() }
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_call/3.
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_cast/2.
Callback implementation for Raxol.Core.Behaviours.BaseManager.handle_manager_info/2.