config

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2026 License: MIT Imports: 10 Imported by: 0

README

config

go-consul/configgo-micro/config 的 Consul 实现,提供最小数据面配置存储与监听能力。

当前主线口径:在配置中心主线交付中,go-consul/config 对应 IDC / 裸机场景。它与 go-k8s/config 共享统一契约,但不是要求同一个运行时产物同时引入两套实现。

当前版本口径:本包已对齐 github.com/fireflycore/go-micro@v1.3.6Store 只保留 Get / Put / Delete,监听能力由独立 Watcher 接口承载。

能力范围

  • StoreGet/Put/Delete
  • WatcherWatch/Unwatch(基于 Consul blocking query)
  • loader 辅助:NewStoreFromLoaderLoadConfigFromStore

路径模型

默认命名空间:/config-center

按单条配置键生成路径:

  • 当前配置:/{namespace}/{tenant}/{env}/{app}/{group}/{name}/current

tenant 为空时会回退为 default

版本历史、发布流水和元信息游标不再保存在数据面,由控制面数据库统一承接。

Loader 辅助

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

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

加密语义

  • go-consul/config 遵循 go-micro/config 的统一加密语义。
  • microcfg.Raw.Encrypted=false 时,读取方直接解析配置内容。
  • microcfg.Raw.Encrypted=true 时,读取方必须先解密整份配置内容,再解析目标结构。
  • 不做字段级加密;如果只有部分内容需要保护,应拆成独立配置项。

快速开始

package main

import (
	"context"

	consulx "github.com/fireflycore/go-consul"
	consulcfg "github.com/fireflycore/go-consul/config"
	microcfg "github.com/fireflycore/go-micro/config"
)

func main() {
	cli, err := consulx.New(&consulx.Conf{
		Address: "127.0.0.1:8500",
	})
	if err != nil {
		panic(err)
	}

	store, err := consulcfg.NewStore(cli, &consulcfg.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.Raw{
		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 added in v0.0.3

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

LoadConfigFromStore 从 Store 读取当前配置并解码为目标类型 T。 当 Raw.Encrypted=true 时,会复用 go-micro/config 的统一规则,先解密整份内容,再解析目标结构。

func NewStoreFromLoader added in v0.0.3

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

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

Types

type Config added in v0.0.5

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

Config 定义 go-consul/config 的可选初始化参数。

func (*Config) BuildOptions added in v0.0.5

func (c *Config) BuildOptions(opts ...microConfig.Option) *microConfig.Options

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

type StoreInstance

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

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

func NewStore

func NewStore(client *api.Client, config *Config, opts ...microConfig.Option) (*StoreInstance, error)

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

func (*StoreInstance) Delete

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

Delete 删除当前配置。

func (*StoreInstance) Get

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

func (*StoreInstance) Put

Put 写入当前生效配置。

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