scirs2_core/distributed/
mod.rs1pub mod array;
8pub mod cluster;
9pub mod communication;
10pub mod fault_tolerance;
11pub mod load_balancing;
12pub mod orchestration;
13pub mod scheduler;
14
15pub use array::{DistributedArray, DistributedArrayManager};
17
18pub use cluster::{
20 initialize_cluster_manager, BackoffStrategy, ClusterConfiguration, ClusterEventLog,
21 ClusterHealth, ClusterManager, ClusterState, ComputeCapacity, DistributedTask,
22 NodeCapabilities, NodeInfo as ClusterNodeInfo, NodeMetadata, NodeStatus, NodeType,
23 ResourceRequirements, RetryPolicy, TaskId, TaskParameters, TaskPriority as ClusterTaskPriority,
24 TaskType,
25};
26
27pub use communication::{
29 CommunicationEndpoint, CommunicationManager, DistributedMessage, HeartbeatHandler,
30 MessageHandler,
31};
32
33pub use fault_tolerance::{
35 initialize_fault_tolerance, ClusterHealthSummary, FaultDetectionStrategy,
36 FaultToleranceManager, NodeHealth as FaultNodeHealth, NodeInfo as FaultNodeInfo,
37 RecoveryStrategy,
38};
39
40pub use load_balancing::{
42 LoadBalancer as DistributedLoadBalancer, LoadBalancingStats, LoadBalancingStrategy,
43 NodeLoad as LoadBalancerNodeLoad, TaskAssignment as LoadBalancerTaskAssignment,
44};
45
46pub use orchestration::{
48 OrchestrationEngine, OrchestrationStats, OrchestratorNode, Task as OrchestrationTask,
49 TaskPriority as OrchestrationTaskPriority, TaskStatus as OrchestrationTaskStatus, Workflow,
50 WorkflowStatus,
51};
52
53pub use scheduler::{
55 initialize_distributed_scheduler, CompletedTask, DistributedScheduler, ExecutionTracker,
56 FailedTask, LoadBalancer as SchedulerLoadBalancer,
57 LoadBalancingStrategy as SchedulerLoadBalancingStrategy, NodeLoad as SchedulerNodeLoad,
58 SchedulingAlgorithm, SchedulingPolicies, TaskAssignment as SchedulerTaskAssignment, TaskQueue,
59};
60
61#[allow(dead_code)]
63pub fn initialize_distributed_computing() -> crate::error::CoreResult<()> {
64 cluster::initialize_cluster_manager()?;
65 scheduler::initialize_distributed_scheduler()?;
66 fault_tolerance::initialize_fault_tolerance()?;
67 Ok(())
68}
69
70#[allow(dead_code)]
72pub fn get_distributed_status() -> crate::error::CoreResult<DistributedSystemStatus> {
73 let cluster_manager = cluster::ClusterManager::global()?;
74 let scheduler = scheduler::DistributedScheduler::global()?;
75
76 Ok(DistributedSystemStatus {
77 cluster_health: cluster_manager.get_health()?,
78 active_nodes: cluster_manager.get_active_nodes()?.len(),
79 pending_tasks: scheduler.get_pending_task_count()?,
80 total_capacity: cluster_manager.get_total_capacity()?,
81 })
82}
83
84#[derive(Debug, Clone)]
85pub struct DistributedSystemStatus {
86 pub cluster_health: ClusterHealth,
87 pub active_nodes: usize,
88 pub pending_tasks: usize,
89 pub total_capacity: ComputeCapacity,
90}