有个疑惑,这里的遍历ServiceSlice,第一个匹配就返回退出了,如果多个服务都匹配规则呢?
来源:10-5 构建接入方式中间件

weibo_隱懓_0
2021-04-15
有个疑惑,这里的遍历ServiceSlice,第一个匹配就返回退出了,如果多个服务都匹配规则呢?
for _, serviceItem := range s.ServiceSlice {
if serviceItem.Info.LoadType != public.LoadTypeHTTP {
continue
}
if serviceItem.HTTPRule.RuleType == public.HTTPRuleTypeDomain {
if serviceItem.HTTPRule.Rule == host {
return serviceItem, nil
}
}
if serviceItem.HTTPRule.RuleType == public.HTTPRuleTypePrefixURL {
if strings.HasPrefix(path, serviceItem.HTTPRule.Rule) {
return serviceItem, nil
}
}
}
那如果我设置的服务A 服务B匹配规则path都是/abc: a.com/abc和 b.com/abc,那岂不是每次都是只返回服务A的信息?
我看了下代码,新增服务的时候这个path和域名不能重复的。我觉得不太合理吧。
如果像服务A a.com/abc 服务b.com/abc 该如何处理呢?
这部分逻辑是不是可以用服务发现来代替?
2回答
-
你说的双域名问题,需要独立对待了。可以新增一个接入类型支持,域名+path就可以了。
012021-04-19 -
牛儿吃草
2021-04-15
目前设计,只支持独立域名绑定和前缀path绑定,如果匹配成功则返回成功结果。
00
相似问题
回答 7
回答 1