grpc_discover

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2023 License: MIT Imports: 17 Imported by: 1

README

Grpc Discover

Plugin
  • ETCD
  • Consul
  • Redis
example

server use etcd plugin

	lis, err := net.Listen("tcp", "127.0.0.1:8372")
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}

	plugin, err := grpc_discover.NewETCDPlugin(clientv3.Config{
		Endpoints:   []string{"127.0.0.1:2379"},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		panic(err)
	}

	// 注册服务 registration service
	serverID, err := plugin.Register("GreeterServer", lis.Addr().String())
	if err != nil {
		panic(err)
	}
	plugin.AutoUnRegister(serverID) // 自动反注册 Automatic anti-registration

	s := grpc.NewServer()
	proto.RegisterGreeterServer(s, &server{})
	log.Printf("server listening at %v", lis.Addr())
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}

client use etcd plugin

    plugin, err := grpc_discover.NewETCDPlugin(clientv3.Config{
		Endpoints:   []string{"127.0.0.1:2379"},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		panic(err)
	}
	resolver.Register(plugin)

	// Set up a connection to the server.
	conn, err := grpc.Dial("etcd:///GreeterServer", grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		log.Fatalf("did not connect: %v", err)
	}
	defer conn.Close()
	c := proto.NewGreeterClient(conn)

	// Contact the server and print out its response.
	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
	defer cancel()
	r, err := c.SayHello(ctx, &proto.HelloReply{Message: "cpxsd"})
	if err != nil {
		log.Fatalf("could not greet: %v", err)
	}
	log.Printf("Greeting: %s", r.GetName())

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrServiceNotFound = errors.New("service not found")
)

errors

Functions

func Signal

func Signal(call func())

Types

type ConsulPlugin

type ConsulPlugin struct {
	// contains filtered or unexported fields
}

func NewConsulPlugin

func NewConsulPlugin(config *consulapi.Config) (*ConsulPlugin, error)

func (*ConsulPlugin) AutoUnRegister

func (c *ConsulPlugin) AutoUnRegister(serverID string)

func (*ConsulPlugin) Build

func (*ConsulPlugin) DiscoverByServerID added in v0.0.2

func (c *ConsulPlugin) DiscoverByServerID(serverID string) (string, error)

func (*ConsulPlugin) DiscoverByServerName added in v0.0.2

func (c *ConsulPlugin) DiscoverByServerName(serverName string) ([]string, error)

func (*ConsulPlugin) Register

func (c *ConsulPlugin) Register(serverName string, address string, checkAddress string) (serverID string, err error)

func (*ConsulPlugin) Scheme

func (c *ConsulPlugin) Scheme() string

func (*ConsulPlugin) UnRegister

func (c *ConsulPlugin) UnRegister(serverID string) error

type ETCDPlugin

type ETCDPlugin struct {
	// contains filtered or unexported fields
}

func NewETCDPlugin

func NewETCDPlugin(config clientv3.Config) (*ETCDPlugin, error)

NewETCDPlugin 初始化 etcd 插件,Initialize etcd plugin

func (*ETCDPlugin) AutoUnRegister

func (e *ETCDPlugin) AutoUnRegister(serverID string)

AutoUnRegister 自动退出

func (*ETCDPlugin) Build

func (*ETCDPlugin) DiscoverByServerID added in v0.0.2

func (e *ETCDPlugin) DiscoverByServerID(serverID string) (string, error)

func (*ETCDPlugin) DiscoverByServerName added in v0.0.2

func (e *ETCDPlugin) DiscoverByServerName(serverName string) ([]string, error)

func (*ETCDPlugin) Register

func (e *ETCDPlugin) Register(serverName string, address string) (serverID string, err error)

Register 服务注册

func (*ETCDPlugin) Scheme

func (e *ETCDPlugin) Scheme() string

func (*ETCDPlugin) UnRegister

func (e *ETCDPlugin) UnRegister(serverID string) error

UnRegister 服务反注册

type GrpcDiscoverPluginInterface

type GrpcDiscoverPluginInterface interface {
	Register(serverName string, address string) (serverID string, err error)
	UnRegister(serverID string) error
	AutoUnRegister(serverID string)

	DiscoverByServerName(serverName string) ([]string, error)
	DiscoverByServerID(serverID string) (string, error)

	Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error)
	Scheme() string
}

type RedisPlugin

type RedisPlugin struct {
	// contains filtered or unexported fields
}

func NewRedisPlugin

func NewRedisPlugin(config *redis.Options) (*RedisPlugin, error)

func (*RedisPlugin) AutoUnRegister

func (r *RedisPlugin) AutoUnRegister(serverID string)

func (*RedisPlugin) Build

func (*RedisPlugin) DiscoverByServerID added in v0.0.2

func (r *RedisPlugin) DiscoverByServerID(serverID string) (string, error)

func (*RedisPlugin) DiscoverByServerName added in v0.0.2

func (r *RedisPlugin) DiscoverByServerName(serverName string) ([]string, error)

func (*RedisPlugin) Register

func (r *RedisPlugin) Register(serverName string, address string) (serverID string, err error)

func (*RedisPlugin) Scheme

func (r *RedisPlugin) Scheme() string

func (*RedisPlugin) UnRegister

func (r *RedisPlugin) UnRegister(serverID string) error

Jump to

Keyboard shortcuts

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