refactor: 重构集群主从节点模式
This commit is contained in:
@@ -70,6 +70,7 @@ func (m *Manager) ReloadConfig() error {
|
||||
|
||||
config := &Config{
|
||||
Server: types.ServerConfig{
|
||||
IsMaster: !utils.ParseBoolean(os.Getenv("IS_SLAVE"), true),
|
||||
Port: utils.ParseInteger(os.Getenv("PORT"), 3001),
|
||||
Host: utils.GetEnvOrDefault("HOST", "0.0.0.0"),
|
||||
ReadTimeout: utils.ParseInteger(os.Getenv("SERVER_READ_TIMEOUT"), 120),
|
||||
@@ -111,6 +112,11 @@ func (m *Manager) ReloadConfig() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// IsMaster returns Server mode
|
||||
func (m *Manager) IsMaster() bool {
|
||||
return m.config.Server.IsMaster
|
||||
}
|
||||
|
||||
// GetAuthConfig returns authentication configuration
|
||||
func (m *Manager) GetAuthConfig() types.AuthConfig {
|
||||
return m.config.Auth
|
||||
|
@@ -36,12 +36,8 @@ type groupManager interface {
|
||||
Invalidate() error
|
||||
}
|
||||
|
||||
type leaderLock interface {
|
||||
IsLeader() bool
|
||||
}
|
||||
|
||||
// Initialize initializes the SystemSettingsManager with database and store dependencies.
|
||||
func (sm *SystemSettingsManager) Initialize(store store.Store, gm groupManager, leaderLock leaderLock) error {
|
||||
func (sm *SystemSettingsManager) Initialize(store store.Store, gm groupManager, isMaster bool) error {
|
||||
settingsLoader := func() (types.SystemSettings, error) {
|
||||
var dbSettings []models.SystemSetting
|
||||
if err := db.DB.Find(&dbSettings).Error; err != nil {
|
||||
@@ -83,12 +79,10 @@ func (sm *SystemSettingsManager) Initialize(store store.Store, gm groupManager,
|
||||
}
|
||||
|
||||
afterLoader := func(newData types.SystemSettings) {
|
||||
if !leaderLock.IsLeader() {
|
||||
if !isMaster {
|
||||
return
|
||||
}
|
||||
if err := gm.Invalidate(); err != nil {
|
||||
logrus.Debugf("Failed to invalidate group manager cache after settings update: %v", err)
|
||||
}
|
||||
gm.Invalidate()
|
||||
}
|
||||
|
||||
syncer, err := syncer.NewCacheSyncer(
|
||||
|
Reference in New Issue
Block a user