This commit is contained in:
DullJZ
2025-09-13 22:29:48 +08:00
parent 61eeba03ac
commit 4268f6238d
7 changed files with 141 additions and 2 deletions
+13
View File
@@ -5,6 +5,7 @@ import (
"github.com/DullJZ/s3-balance/internal/bucket"
"github.com/DullJZ/s3-balance/internal/config"
"github.com/DullJZ/s3-balance/internal/metrics"
)
// Balancer 负载均衡器
@@ -13,6 +14,7 @@ type Balancer struct {
manager *bucket.Manager
strategy Strategy
config *config.BalancerConfig
metrics *metrics.Metrics
}
// NewBalancer 创建新的负载均衡器
@@ -37,6 +39,7 @@ func NewBalancer(manager *bucket.Manager, cfg *config.BalancerConfig) (*Balancer
manager: manager,
strategy: strategy,
config: cfg,
metrics: nil, // 将在main.go中设置
}, nil
}
@@ -67,6 +70,11 @@ func (b *Balancer) SelectBucket(key string, size int64) (*bucket.BucketInfo, err
return nil, err
}
// 记录指标
if b.metrics != nil && selected != nil {
b.metrics.RecordBalancerDecision(b.strategy.Name(), selected.Config.Name)
}
return selected, nil
}
@@ -97,6 +105,11 @@ func (b *Balancer) SetStrategy(strategyName string) error {
return nil
}
// SetMetrics 设置指标服务
func (b *Balancer) SetMetrics(metrics *metrics.Metrics) {
b.metrics = metrics
}
// GetAvailableBuckets 获取所有可用的存储桶
// 方便外部直接查询可用存储桶列表
func (b *Balancer) GetAvailableBuckets() []*bucket.BucketInfo {