Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrStoreIsNil 表示存储实现为空。 ErrStoreIsNil = errors.New("config store is nil") // ErrWatcherIsNil 表示监听实现为空。 ErrWatcherIsNil = errors.New("config watcher is nil") // ErrCodecIsNil 表示编解码实现为空。 ErrCodecIsNil = errors.New("config codec is nil") // ErrEncryptorIsNil 表示加解密实现为空。 ErrEncryptorIsNil = errors.New("config encryptor is nil") // ErrInvalidKey 表示配置键不合法。 ErrInvalidKey = errors.New("invalid config key") // ErrInvalidItem 表示配置内容不合法。 ErrInvalidItem = errors.New("invalid config item") // ErrResourceNotFound 表示配置资源不存在。 ErrResourceNotFound = errors.New("config resource not found") // ErrVersionConflict 表示写入版本冲突。 ErrVersionConflict = errors.New("config version conflict") )
Functions ¶
This section is empty.
Types ¶
type Codec ¶
type Codec interface {
// Marshal 把结构化对象编码为字节。
Marshal(v any) ([]byte, error)
// Unmarshal 把字节解码到目标对象。
Unmarshal(data []byte, dst any) error
}
Codec 定义配置内容序列化与反序列化能力。
type Encryptor ¶
type Encryptor interface {
// Encrypt 使用给定密钥加密数据。
Encrypt(data []byte, key []byte) ([]byte, error)
// Decrypt 使用给定密钥解密数据。
Decrypt(data []byte, key []byte) ([]byte, error)
}
Encryptor 定义配置内容加解密能力。
type Item ¶
type Item struct {
// Version 表示配置版本号。
Version string `json:"version"`
// Content 是配置原始内容。
Content []byte `json:"content"`
// Encrypted 标识 Content 是否已加密。
Encrypted bool `json:"encrypted"`
// Meta 记录扩展元信息。
Meta map[string]string `json:"meta"`
// UpdatedAt 表示最近更新时间。
UpdatedAt time.Time `json:"updated_at"`
// UpdatedBy 表示最近更新人。
UpdatedBy string `json:"updated_by"`
}
Item 表示一条可发布、可读取的配置内容。
type Key ¶
type Key struct {
// Tenant 表示租户标识,用于多租户隔离。
Tenant string `json:"tenant"`
// Env 表示环境,如 dev/staging/prod。
Env string `json:"env"`
// AppID 表示应用标识。
AppID string `json:"app_id"`
// Group 表示配置分组。
Group string `json:"group"`
// Name 表示具体配置名。
Name string `json:"name"`
}
Key 描述一条配置在存储中的业务主键。
type Meta ¶
type Meta struct {
// CurrentVersion 表示当前生效版本。
CurrentVersion string `json:"current_version"`
// LatestVersion 表示最新发布版本。
LatestVersion string `json:"latest_version"`
}
Meta 表示一组配置的版本游标信息。
type Options ¶
type Options struct {
// Namespace 用于区分配置键空间。
Namespace string
// Timeout 用于单次请求超时控制。
Timeout time.Duration
// Retry 用于失败重试次数控制。
Retry uint32
// WatchBuffer 用于监听事件通道缓冲区大小。
WatchBuffer int
// Codec 为可选编解码器。
Codec Codec
// Encryptor 为可选加解密器。
Encryptor Encryptor
}
Options 定义 config 组件的通用运行参数。
type Query ¶
type Query struct {
// Key 是基础配置键。
Key Key `json:"key"`
// TenantID 表示请求上下文中的租户标识。
TenantID string `json:"tenant_id"`
// AppID 表示请求上下文中的应用标识。
AppID string `json:"app_id"`
// UserID 表示请求上下文中的用户标识。
UserID string `json:"user_id"`
// Tags 表示额外标签条件。
Tags map[string]string `json:"tags"`
}
Query 表示运行时按上下文查询配置的入参。
type Store ¶
type Store interface {
// Get 按配置键读取当前生效配置。
Get(ctx context.Context, key Key) (*Item, error)
// GetByQuery 按运行时上下文读取配置。
GetByQuery(ctx context.Context, query Query) (*Item, error)
// Put 写入当前生效配置。
Put(ctx context.Context, key Key, item *Item) error
// Delete 删除当前配置。
Delete(ctx context.Context, key Key) error
// PutVersion 写入版本快照并返回版本号。
PutVersion(ctx context.Context, key Key, item *Item) (string, error)
// GetVersion 读取指定版本快照。
GetVersion(ctx context.Context, key Key, version string) (*Item, error)
// ListVersions 列出版本号列表。
ListVersions(ctx context.Context, key Key, limit int) ([]string, error)
// GetMeta 读取配置元信息。
GetMeta(ctx context.Context, key Key) (*Meta, error)
// PutMeta 写入配置元信息。
PutMeta(ctx context.Context, key Key, meta *Meta) error
}
Store 定义统一配置存储抽象,供 etcd/consul/k8s 实现对齐。
type WatchEvent ¶
type WatchEvent struct {
// Type 表示事件类型。
Type EventType `json:"type"`
// Key 表示事件对应的配置键。
Key Key `json:"key"`
// Item 表示事件携带的配置内容。
Item *Item `json:"item"`
}
WatchEvent 表示 watch 通知事件。
Click to show internal directories.
Click to hide internal directories.