有个疑惑,这里的遍历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回答

牛儿吃草

2021-04-15

你说的双域名问题,需要独立对待了。可以新增一个接入类型支持,域名+path就可以了。

0
1
weibo_隱懓_0
非常感谢!
2021-04-19
共1条回复

牛儿吃草

2021-04-15

目前设计,只支持独立域名绑定和前缀path绑定,如果匹配成功则返回成功结果。

0
0

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1317 学习 · 352 问题

查看课程