config

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2026 License: MIT Imports: 12 Imported by: 0

README

config

go-etcd/configgo-micro/config 的 etcd 实现,提供统一的配置存储与监听能力。

能力范围

  • StoreGet/GetByQuery/Put/Delete
  • 版本能力:PutVersion/GetVersion/ListVersions
  • 元信息能力:GetMeta/PutMeta
  • WatcherWatch/Unwatch
  • loader 辅助:NewStoreFromLoaderLoadConfigFromStore

路径模型

默认命名空间:/config-center

按单条配置键生成路径:

  • 当前配置:/{namespace}/{tenant}/{env}/{app}/{group}/{name}/current
  • 版本前缀:/{namespace}/{tenant}/{env}/{app}/{group}/{name}/versions
  • 版本快照:/{namespace}/{tenant}/{env}/{app}/{group}/{name}/versions/{version}
  • 元信息:/{namespace}/{tenant}/{env}/{app}/{group}/{name}/meta

tenant 为空时会回退为 default

Loader 辅助

当调用方已经接入 go-micro/configLoaderParams / StoreParams 体系时,可以直接使用:

  • NewStoreFromLoader:先按 local / remote 规则加载 etcd.Conf,再创建 Store
  • LoadConfigFromStore:从 Store 读取配置并解码为目标类型

快速开始

package main

import (
	"context"

	etcdx "github.com/fireflycore/go-etcd"
	etcdcfg "github.com/fireflycore/go-etcd/config"
	microcfg "github.com/fireflycore/go-micro/config"
)

func main() {
	cli, err := etcdx.New(&etcdx.Conf{
		Endpoint: []string{"127.0.0.1:2379"},
	})
	if err != nil {
		panic(err)
	}
	defer cli.Close()

	store, err := etcdcfg.NewStore(cli, &etcdcfg.Conf{
		Namespace: "/config-center",
	})
	if err != nil {
		panic(err)
	}

	key := microcfg.Key{
		TenantId: "t1",
		Env:      "prod",
		AppId:    "order-service",
		Group:    "db",
		Name:     "primary",
	}

	_ = store.Put(context.Background(), key, &microcfg.Item{
		Version: "v1",
		Content: []byte(`{"dsn":"root:root@tcp(127.0.0.1:3306)/order"}`),
	})

	_, _ = store.Get(context.Background(), key)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadConfigFromStore

func LoadConfigFromStore[T any](ctx context.Context, store config.Store, params config.StoreParams, payloadDecode config.PayloadDecodeFunc) (T, error)

LoadConfigFromStore 从 Store 读取当前配置并解码为目标类型 T。

func NewStoreFromLoader

func NewStoreFromLoader(params config.LoaderParams, localLoad config.LocalLoaderFunc, remoteLoad config.RemoteLoaderFunc, payloadDecode config.PayloadDecodeFunc, conf *Conf, opts ...config.Option) (config.Store, error)

NewStoreFromLoader 基于统一加载参数创建 Etcd 配置存储实例。 流程:先按 local / remote 解析出 etcd.Conf,再创建客户端,最后构建 Store。

Types

type Conf

type Conf struct {
	// Namespace 表示配置存储根路径,如 /config-center。
	Namespace string `json:"namespace"`
	// Timeout 表示单次 etcd 读写超时时间。
	Timeout time.Duration `json:"timeout"`
	// Retry 表示失败重试次数预留字段。
	Retry uint32 `json:"retry"`
	// WatchBuffer 表示 watch 事件缓冲区大小。
	WatchBuffer int `json:"watch_buffer"`
}

Conf 定义 go-etcd/config 的可选初始化参数。

func (*Conf) BuildOptions

func (c *Conf) BuildOptions(opts ...microconfig.Option) *microconfig.Options

BuildOptions 把 Conf 转换为统一的 micro config options。

type StoreInstance

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

StoreInstance 是基于 etcd 的统一配置存储实现。

func NewStore

func NewStore(client *clientv3.Client, conf *Conf, opts ...microconfig.Option) (*StoreInstance, error)

NewStore 基于 etcd 客户端创建配置存储实例。

func (*StoreInstance) Delete

func (s *StoreInstance) Delete(ctx context.Context, key microconfig.Key) error

Delete 删除当前配置。

func (*StoreInstance) Get

Get 按配置键读取当前生效配置。

func (*StoreInstance) GetByQuery

func (s *StoreInstance) GetByQuery(ctx context.Context, query microconfig.Query) (*microconfig.Item, error)

GetByQuery 按运行时上下文读取配置。

func (*StoreInstance) GetMeta

func (s *StoreInstance) GetMeta(ctx context.Context, key microconfig.Key) (*microconfig.Meta, error)

GetMeta 读取配置元信息。

func (*StoreInstance) GetVersion

func (s *StoreInstance) GetVersion(ctx context.Context, key microconfig.Key, version string) (*microconfig.Item, error)

GetVersion 读取指定版本快照。

func (*StoreInstance) ListVersions

func (s *StoreInstance) ListVersions(ctx context.Context, key microconfig.Key, limit int) ([]string, error)

ListVersions 列出版本号列表。

func (*StoreInstance) Put

Put 写入当前生效配置。

func (*StoreInstance) PutMeta

func (s *StoreInstance) PutMeta(ctx context.Context, key microconfig.Key, meta *microconfig.Meta) error

PutMeta 写入配置元信息。

func (*StoreInstance) PutVersion

func (s *StoreInstance) PutVersion(ctx context.Context, key microconfig.Key, item *microconfig.Item) (string, error)

PutVersion 写入版本快照并返回版本号。

func (*StoreInstance) Unwatch

func (s *StoreInstance) Unwatch(key microconfig.Key)

Unwatch 取消指定配置键的监听。

func (*StoreInstance) Watch

func (s *StoreInstance) Watch(ctx context.Context, key microconfig.Key) (<-chan microconfig.WatchEvent, error)

Watch 监听指定配置键的变更事件。

Jump to

Keyboard shortcuts

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