naming

package
v3.5.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 21, 2022 License: Apache-2.0 Imports: 0 Imported by: 0

Documentation

Overview

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));
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL