package naming
import "go.etcd.io/etcd/client/v3/naming"
Package naming provides:
- subpackage endpoints: an abstraction layer to store and read endpoints information from etcd.
- subpackage resolver: an etcd-backed gRPC resolver for discovering gRPC services based on the endpoints configuration
To use, first import the packages:
import ( "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/client/v3/naming/resolver" "google.golang.org/grpc" )
First, register new endpoint addresses for a service:
func etcdAdd(c *clientv3.Client, service, addr string) error {
em := endpoints.NewManager(c, service)
return em.AddEndpoint(c.Ctx(), service+"/"+addr, endpoints.Endpoint{Addr:addr});
}
Dial an RPC service using the etcd gRPC resolver and a gRPC Balancer:
func etcdDial(c *clientv3.Client, service string) (*grpc.ClientConn, error) {
etcdResolver, err := resolver.NewBuilder(c);
if err { return nil, err }
return grpc.Dial("etcd:///" + service, grpc.WithResolvers(etcdResolver))
}
Optionally, force delete an endpoint:
func etcdDelete(c *clientv3, service, addr string) error {
em := endpoints.NewManager(c, service)
return em.DeleteEndpoint(c.Ctx(), service+"/"+addr)
}
Or register an expiring endpoint with a lease:
func etcdAdd(c *clientv3.Client, lid clientv3.LeaseID, service, addr string) error {
em := endpoints.NewManager(c, service)
return em.AddEndpoint(c.Ctx(), service+"/"+addr, endpoints.Endpoint{Addr:addr}, clientv3.WithLease(lid));
}
Index ¶
Source Files ¶
doc.go
Directories ¶
| Path | Synopsis |
|---|---|
| naming/endpoints | |
| naming/endpoints/internal | |
| naming/resolver |
- Version
- v3.6.4 (latest)
- Published
- Jul 25, 2025
- Platform
- linux/amd64
- Last checked
- 3 months ago –
Tools for package owners.