registry

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2026 License: MIT Imports: 9 Imported by: 0

README

Registry

registry 子包提供基于 etcd v3 的服务注册与发现实现,接口类型复用 github.com/fireflycore/go-micro/registry

服务注册

package main

import (
	"log"

	etcd "github.com/fireflycore/go-etcd/registry"
	"github.com/fireflycore/go-micro/registry"
	clientv3 "go.etcd.io/etcd/client/v3"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{Endpoints: []string{"127.0.0.1:2379"}})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()

	reg, err := etcd.NewRegister(cli, &registry.Meta{Env: "prod", AppId: "demo", Version: "v0.0.1"}, &registry.ServiceConf{})
	if err != nil {
		log.Fatal(err)
	}
	defer reg.Uninstall()

	go reg.SustainLease()
}

服务发现

package main

import (
	"log"

	etcd "github.com/fireflycore/go-etcd/registry"
	"github.com/fireflycore/go-micro/registry"
	clientv3 "go.etcd.io/etcd/client/v3"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{Endpoints: []string{"127.0.0.1:2379"}})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()

	disc, err := etcd.NewDiscover(cli, &registry.Meta{Env: "prod"}, &registry.ServiceConf{})
	if err != nil {
		log.Fatal(err)
	}

	go disc.Watcher()
	defer disc.Unwatch()

	_, _ = disc.GetService("/package.Service/Method")
}

Documentation

Overview

Package etcd 提供基于 etcd 的服务注册与服务发现实现。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDiscover

func NewDiscover(client *clientv3.Client, meta *micro.Meta, conf *micro.ServiceConf) (micro.Discovery, error)

NewDiscover 创建基于 etcd 的服务发现实例。 参数:

  • client: etcd客户端实例
  • meta: 服务元数据信息
  • config: 服务配置信息

返回:

  • micro.Discovery: 服务发现接口实现
  • error: 错误信息

func NewRegister

func NewRegister(client *clientv3.Client, meta *micro.Meta, conf *micro.ServiceConf) (micro.Register, error)

NewRegister 创建基于 etcd 的服务注册实例。

Types

type DiscoverInstance

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

DiscoverInstance 基于 etcd 的服务发现实例。

func (*DiscoverInstance) GetService

func (s *DiscoverInstance) GetService(sm string) ([]*micro.ServiceNode, string, error)

GetService 根据 gRPC 方法名获取对应的服务节点列表。 参数:

  • sm: 服务方法名

返回:

  • []*micro.ServiceNode: 服务节点列表
  • error: 错误信息,当服务方法不存在时返回错误

func (*DiscoverInstance) Unwatch

func (s *DiscoverInstance) Unwatch()

Unwatch 停止服务发现监控并释放资源 调用此方法会取消上下文,停止所有的监控goroutine

func (*DiscoverInstance) Watcher

func (s *DiscoverInstance) Watcher()

Watcher 启动服务发现监控。 该方法会阻塞执行,持续监控 etcd 中的服务变化,通常在单独的 goroutine 中调用。

func (*DiscoverInstance) WithLog

func (s *DiscoverInstance) WithLog(log *zap.Logger)

WithLog 设置日志记录函数 参数:

  • handle: 日志处理函数,接收日志级别和消息内容

type RegisterInstance

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

RegisterInstance 基于 etcd 的服务注册实例

func (*RegisterInstance) Install

func (s *RegisterInstance) Install(service *micro.ServiceNode) error

Install 将服务节点写入注册中心,并绑定到当前 lease。

func (*RegisterInstance) SustainLease

func (s *RegisterInstance) SustainLease()

SustainLease 持续续约,直到上下文被取消。

func (*RegisterInstance) Uninstall

func (s *RegisterInstance) Uninstall()

Uninstall 撤销 lease 并停止续约。

func (*RegisterInstance) WithLog

func (s *RegisterInstance) WithLog(log *zap.Logger)

WithLog 设置内部日志输出回调。

func (*RegisterInstance) WithRetryAfter

func (s *RegisterInstance) WithRetryAfter(handle func())

WithRetryAfter 设置重试成功后回调。

func (*RegisterInstance) WithRetryBefore

func (s *RegisterInstance) WithRetryBefore(handle func())

WithRetryBefore 设置重试前回调。

Jump to

Keyboard shortcuts

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