scirs2_cluster/distributed/mod.rs
1//! Distributed clustering algorithms and infrastructure
2//!
3//! This module provides a comprehensive distributed clustering framework with
4//! support for fault tolerance, load balancing, performance monitoring, and
5//! various data partitioning strategies.
6//!
7//! ## Architecture
8//!
9//! The distributed clustering system is organized into several key components:
10//!
11//! - **Core**: Main distributed K-means algorithm implementation
12//! - **Message Passing**: Communication infrastructure for worker coordination
13//! - **Fault Tolerance**: Worker health monitoring and failure recovery
14//! - **Partitioning**: Data distribution strategies across workers
15//! - **Load Balancing**: Dynamic workload optimization algorithms
16//! - **Monitoring**: Performance metrics and system health analysis
17//!
18//! ## Example Usage
19//!
20//! ```rust
21//! use scirs2_cluster::distributed::{DistributedKMeans, DistributedKMeansConfig};
22//! use scirs2_core::ndarray::Array2;
23//!
24//! // Create sample data
25//! let data = Array2::from_shape_vec((1000, 2), (0..2000).map(|x| x as f64).collect()).expect("operation should succeed");
26//!
27//! // Configure distributed clustering
28//! let config = DistributedKMeansConfig {
29//! max_iterations: 100,
30//! n_workers: 4,
31//! enable_fault_tolerance: true,
32//! enable_load_balancing: true,
33//! ..Default::default()
34//! };
35//!
36//! // Create and fit distributed K-means
37//! let mut kmeans = DistributedKMeans::new(5, config).expect("operation should succeed");
38//! let result = kmeans.fit(data.view()).expect("operation should succeed");
39//!
40//! println!("Clustering completed in {} iterations", result.n_iterations);
41//! println!("Final inertia: {:.6}", result.inertia);
42//! ```
43
44pub mod core;
45pub mod fault_tolerance;
46pub mod load_balancing;
47pub mod message_passing;
48pub mod monitoring;
49pub mod partitioning;
50
51// Re-export main types for convenience
52pub use core::{
53 ClusteringResult, ConvergenceInfo, DistributedKMeans, DistributedKMeansConfig,
54 InitializationMethod, PerformanceStatistics,
55};
56
57pub use message_passing::{
58 ClusteringMessage, MessageEnvelope, MessagePassingCoordinator, MessagePriority,
59 RecoveryStrategy, WorkerStatus as MessageWorkerStatus,
60};
61
62pub use fault_tolerance::{
63 ClusteringCheckpoint, DataPartition, FaultToleranceConfig, FaultToleranceCoordinator,
64 WorkerHealthInfo, WorkerStatus,
65};
66
67pub use partitioning::{
68 DataPartitioner, PartitioningConfig, PartitioningStatistics, PartitioningStrategy,
69};
70
71pub use load_balancing::{
72 LoadBalanceDecision, LoadBalancingConfig, LoadBalancingCoordinator, LoadBalancingStrategy,
73 OptimizationObjective, WorkerProfile,
74};
75
76pub use monitoring::{
77 AlertSeverity, AlertType, EfficiencyAnalysis, MonitoringConfig, MonitoringReport,
78 PerformanceAlert, PerformanceMetrics, PerformanceMonitor, ResourceUsage, WorkerMetrics,
79};
80
81/// Convenient type alias for f64-based distributed K-means
82pub type DistributedKMeansF64 = DistributedKMeans<f64>;
83
84/// Convenient type alias for f32-based distributed K-means
85pub type DistributedKMeansF32 = DistributedKMeans<f32>;