feat: 并发池功能
This commit is contained in:
@@ -47,6 +47,7 @@ type Config struct {
|
||||
CORS types.CORSConfig `json:"cors"`
|
||||
Performance types.PerformanceConfig `json:"performance"`
|
||||
Log types.LogConfig `json:"log"`
|
||||
Database types.DatabaseConfig `json:"database"`
|
||||
RedisDSN string `json:"redis_dsn"`
|
||||
}
|
||||
|
||||
@@ -102,6 +103,7 @@ func (m *Manager) ReloadConfig() error {
|
||||
Performance: types.PerformanceConfig{
|
||||
MaxConcurrentRequests: parseInteger(os.Getenv("MAX_CONCURRENT_REQUESTS"), 100),
|
||||
EnableGzip: parseBoolean(os.Getenv("ENABLE_GZIP"), true),
|
||||
KeyValidationPoolSize: parseInteger(os.Getenv("KEY_VALIDATION_POOL_SIZE"), 10),
|
||||
},
|
||||
Log: types.LogConfig{
|
||||
Level: getEnvOrDefault("LOG_LEVEL", "info"),
|
||||
@@ -110,6 +112,10 @@ func (m *Manager) ReloadConfig() error {
|
||||
FilePath: getEnvOrDefault("LOG_FILE_PATH", "logs/app.log"),
|
||||
EnableRequest: parseBoolean(os.Getenv("LOG_ENABLE_REQUEST"), true),
|
||||
},
|
||||
Database: types.DatabaseConfig{
|
||||
DSN: os.Getenv("DATABASE_DSN"),
|
||||
AutoMigrate: parseBoolean(os.Getenv("DB_AUTO_MIGRATE"), true),
|
||||
},
|
||||
RedisDSN: os.Getenv("REDIS_DSN"),
|
||||
}
|
||||
m.config = config
|
||||
@@ -154,6 +160,11 @@ func (m *Manager) GetRedisDSN() string {
|
||||
return m.config.RedisDSN
|
||||
}
|
||||
|
||||
// GetDatabaseConfig returns the database configuration.
|
||||
func (m *Manager) GetDatabaseConfig() types.DatabaseConfig {
|
||||
return m.config.Database
|
||||
}
|
||||
|
||||
// GetEffectiveServerConfig returns server configuration merged with system settings
|
||||
func (m *Manager) GetEffectiveServerConfig() types.ServerConfig {
|
||||
config := m.config.Server
|
||||
@@ -217,6 +228,7 @@ func (m *Manager) DisplayConfig() {
|
||||
}
|
||||
logrus.Infof(" CORS: %s", corsStatus)
|
||||
logrus.Infof(" Max concurrent requests: %d", perfConfig.MaxConcurrentRequests)
|
||||
logrus.Infof(" Concurrency pool size: %d", perfConfig.KeyValidationPoolSize)
|
||||
|
||||
gzipStatus := "disabled"
|
||||
if perfConfig.EnableGzip {
|
||||
|
@@ -37,7 +37,6 @@ type SystemSettings struct {
|
||||
|
||||
// 密钥验证
|
||||
KeyValidationIntervalMinutes int `json:"key_validation_interval_minutes" default:"60" name:"定时验证周期" category:"密钥验证" desc:"后台定时验证密钥的默认周期(分钟)" validate:"min=5"`
|
||||
KeyValidationConcurrency int `json:"key_validation_concurrency" default:"10" name:"验证并发数" category:"密钥验证" desc:"执行密钥验证时的并发 goroutine 数量" validate:"min=10,max=200"`
|
||||
KeyValidationTaskTimeoutMinutes int `json:"key_validation_task_timeout_minutes" default:"60" name:"手动验证超时" category:"密钥验证" desc:"手动触发的全量验证任务的超时时间(分钟)" validate:"min=10"`
|
||||
}
|
||||
|
||||
@@ -375,8 +374,8 @@ func (sm *SystemSettingsManager) DisplayCurrentSettings() {
|
||||
logrus.Infof(" Request timeouts: request=%ds, response=%ds, idle_conn=%ds",
|
||||
sm.settings.RequestTimeout, sm.settings.ResponseTimeout, sm.settings.IdleConnTimeout)
|
||||
logrus.Infof(" Request log retention: %d days", sm.settings.RequestLogRetentionDays)
|
||||
logrus.Infof(" Key validation: interval=%dmin, concurrency=%d, task_timeout=%dmin",
|
||||
sm.settings.KeyValidationIntervalMinutes, sm.settings.KeyValidationConcurrency, sm.settings.KeyValidationTaskTimeoutMinutes)
|
||||
logrus.Infof(" Key validation: interval=%dmin, task_timeout=%dmin",
|
||||
sm.settings.KeyValidationIntervalMinutes, sm.settings.KeyValidationTaskTimeoutMinutes)
|
||||
}
|
||||
|
||||
// 辅助方法
|
||||
|
Reference in New Issue
Block a user