feat: add etcd resolver scheme, fix discov minor issue (#1281)

This commit is contained in:
Kevin Wan
2021-11-28 20:08:18 +08:00
committed by GitHub
parent 038491b7bc
commit d828c3f37e
5 changed files with 54 additions and 18 deletions

View File

@@ -10,7 +10,7 @@ import (
type discovBuilder struct{}
func (b *discovBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (
func (b *discovBuilder) Build(target resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) (
resolver.Resolver, error) {
hosts := strings.FieldsFunc(target.Authority, func(r rune) bool {
return r == EndpointSepChar

View File

@@ -0,0 +1,9 @@
package resolver
type etcdBuilder struct {
discovBuilder
}
func (b *etcdBuilder) Scheme() string {
return EtcdScheme
}

View File

@@ -11,6 +11,8 @@ const (
DirectScheme = "direct"
// DiscovScheme stands for discov scheme.
DiscovScheme = "discov"
// EtcdScheme stands for etcd scheme.
EtcdScheme = "etcd"
// KubernetesScheme stands for k8s scheme.
KubernetesScheme = "k8s"
// EndpointSepChar is the separator cha in endpoints.
@@ -23,16 +25,18 @@ var (
// EndpointSep is the separator string in endpoints.
EndpointSep = fmt.Sprintf("%c", EndpointSepChar)
dirBuilder directBuilder
disBuilder discovBuilder
k8sBuilder kubeBuilder
directResolverBuilder directBuilder
discovResolverBuilder discovBuilder
etcdResolverBuilder etcdBuilder
k8sResolverBuilder kubeBuilder
)
// RegisterResolver registers the direct and discov schemes to the resolver.
func RegisterResolver() {
resolver.Register(&dirBuilder)
resolver.Register(&disBuilder)
resolver.Register(&k8sBuilder)
resolver.Register(&directResolverBuilder)
resolver.Register(&discovResolverBuilder)
resolver.Register(&etcdResolverBuilder)
resolver.Register(&k8sResolverBuilder)
}
type nopResolver struct {