You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
912 B
37 lines
912 B
package discovery |
|
|
|
import ( |
|
"context" |
|
"google.golang.org/grpc/resolver" |
|
) |
|
|
|
type Registry interface { |
|
// Registry server instance |
|
Registry(ctx context.Context, server Server) (err error) |
|
} |
|
|
|
type GrpcResolver interface { |
|
DialUrl(serviceName string) string |
|
// Resolver get grpc dial resolver |
|
Resolver() (builder resolver.Builder, err error) |
|
} |
|
|
|
type Resolver interface { |
|
// ResolveAll get service all instance |
|
ResolveAll(ctx context.Context, serviceName string) (servers []Server, err error) |
|
// Watch when service instance change, send current all instances to channel |
|
Watch(ctx context.Context, serviceName string) (ch chan []Server, err error) |
|
} |
|
|
|
type Discovery interface { |
|
Registry |
|
Resolver |
|
GrpcResolver |
|
} |
|
|
|
// Server registry format |
|
type Server struct { |
|
Name string `json:"name"` |
|
Addr string `json:"addr"` // 地址 |
|
Attrs map[string]string `json:"attrs"` // attributes |
|
}
|
|
|