scirs2_core/distributed/
mod.rs

1//! Production-grade distributed computing infrastructure
2//!
3//! This module provides comprehensive distributed computing capabilities
4//! for SciRS2 Core 1.0, including distributed arrays, cluster management,
5//! fault tolerance, and scalable computation orchestration.
6
7pub mod array;
8pub mod cluster;
9pub mod communication;
10pub mod fault_tolerance;
11pub mod load_balancing;
12pub mod orchestration;
13pub mod scheduler;
14
15// Array operations
16pub use array::{DistributedArray, DistributedArrayManager};
17
18// Cluster management
19pub 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
27// Communication
28pub use communication::{
29    CommunicationEndpoint, CommunicationManager, DistributedMessage, HeartbeatHandler,
30    MessageHandler,
31};
32
33// Fault tolerance
34pub use fault_tolerance::{
35    initialize_fault_tolerance, ClusterHealthSummary, FaultDetectionStrategy,
36    FaultToleranceManager, NodeHealth as FaultNodeHealth, NodeInfo as FaultNodeInfo,
37    RecoveryStrategy,
38};
39
40// Load balancing
41pub use load_balancing::{
42    LoadBalancer as DistributedLoadBalancer, LoadBalancingStats, LoadBalancingStrategy,
43    NodeLoad as LoadBalancerNodeLoad, TaskAssignment as LoadBalancerTaskAssignment,
44};
45
46// Orchestration
47pub use orchestration::{
48    OrchestrationEngine, OrchestrationStats, OrchestratorNode, Task as OrchestrationTask,
49    TaskPriority as OrchestrationTaskPriority, TaskStatus as OrchestrationTaskStatus, Workflow,
50    WorkflowStatus,
51};
52
53// Scheduler
54pub 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/// Initialize distributed computing infrastructure
62#[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/// Get distributed system status
71#[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}