优化源站有专属域名情况下的算法

This commit is contained in:
GoEdgeLab
2022-05-23 19:59:05 +08:00
parent d400ff93d0
commit a1a500dd71

View File

@@ -65,6 +65,7 @@ func (this *ReverseProxyConfig) Init() error {
// 将源站分组
this.schedulingGroupMap = map[string]*SchedulingGroup{}
var hasDomainGroups = false
for _, origin := range this.PrimaryOrigins {
if len(origin.Domains) == 0 {
group, ok := this.schedulingGroupMap[""]
@@ -77,6 +78,7 @@ func (this *ReverseProxyConfig) Init() error {
}
group.PrimaryOrigins = append(group.PrimaryOrigins, origin)
} else {
hasDomainGroups = true
for _, domain := range origin.Domains {
group, ok := this.schedulingGroupMap[domain]
if !ok {
@@ -102,6 +104,7 @@ func (this *ReverseProxyConfig) Init() error {
}
group.BackupOrigins = append(group.BackupOrigins, origin)
} else {
hasDomainGroups = true
for _, domain := range origin.Domains {
group, ok := this.schedulingGroupMap[domain]
if !ok {
@@ -116,6 +119,23 @@ func (this *ReverseProxyConfig) Init() error {
}
}
// 再次分解
if hasDomainGroups {
defaultGroup, ok := this.schedulingGroupMap[""]
if ok {
delete(this.schedulingGroupMap, "")
for _, group := range this.schedulingGroupMap {
for _, origin := range defaultGroup.PrimaryOrigins {
group.PrimaryOrigins = append(group.PrimaryOrigins, origin)
}
for _, origin := range defaultGroup.BackupOrigins {
group.BackupOrigins = append(group.BackupOrigins, origin)
}
}
}
}
// 初始化分组
for _, group := range this.schedulingGroupMap {
err := group.Init()