dsync

package
v0.3.68 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2026 License: LGPL-2.1 Imports: 10 Imported by: 2

Documentation

Overview

Package dsync 定义分布式同步能力的抽象层,供不同锁实现复用。

可通过 AddIn 从 service context 中获取 IDistSync,并通过 With 配置 锁的过期时间、重试策略等通用行为。

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotAcquired 表示当前句柄没有持有锁,或后端已失去该锁的所有权。
	ErrNotAcquired = errors.New("dsync: lock is not acquired")
	// ErrAlreadyAcquired 表示当前句柄已经在持有或尝试获取锁。
	ErrAlreadyAcquired = errors.New("dsync: lock is already acquired")
)
View Source
var (
	// AddIn 是分布式同步接口的服务级 add-in 描述符,用于查询已安装的具体实现。
	AddIn = define.ServiceAddInInterface[IDistSync]()
)
View Source
var With _DistMutexOption

With 提供分布式锁的 Option 构造方法。

Functions

This section is empty.

Types

type DistMutexOptions

type DistMutexOptions struct {
	Expiry         time.Duration  // Expiry 是锁租约的有效期。
	Tries          int            // Tries 是后端尝试获取锁的次数。
	RetryDelayFunc RetryDelayFunc // RetryDelayFunc 计算相邻重试间隔。
	DriftFactor    float64        // DriftFactor 是计算有效期时预留的时钟漂移比例。
	TimeoutFactor  float64        // TimeoutFactor 是单次后端操作占租约时长的比例。
	GenUIDFunc     GenUIDFunc     // GenUIDFunc 为新锁生成所有权 ID。
	UID            string         // UID 显式指定所有权 ID;部分后端不支持。
}

DistMutexOptions 配置分布式锁的租约、重试及所有权标识策略。

type GenUIDFunc added in v0.3.68

type GenUIDFunc = generic.FuncPair0[string, error]

GenUIDFunc 生成锁所有权唯一 ID。

type IDistMutex

type IDistMutex interface {
	// Name 返回不含后端键前缀的锁名称。
	Name() string
	// UID 返回当前锁所有权标识;后端不支持或尚未加锁时可能为空。
	UID() string
	// Until 返回当前租约的预计失效时间;后端不支持时返回零值。
	Until() time.Time
	// TryLock 尝试获取锁;重试策略由具体后端和 Option 决定。
	TryLock(ctx context.Context) error
	// Lock 等待并获取锁;等待受 ctx 及具体后端超时策略约束。
	Lock(ctx context.Context) error
	// Unlock 释放当前持有的锁。
	Unlock(ctx context.Context) error
	// Extend 延长当前锁租约;不支持续期的后端会返回错误。
	Extend(ctx context.Context) error
}

IDistMutex 表示一个具有实现特定租约语义的分布式互斥锁。 同一个句柄不能并发执行加锁、解锁或续期操作。

type IDistSync

type IDistSync interface {
	// NewMutex 创建逻辑名称为 name 的分布式锁句柄;创建本身不会获取锁。
	NewMutex(name string, settings ...option.Setting[DistMutexOptions]) IDistMutex
	// Separator 返回该后端组织层级锁名称时使用的分隔符。
	Separator() string
}

IDistSync 创建特定后端的分布式互斥锁。

type RetryDelayFunc added in v0.3.68

type RetryDelayFunc = generic.Func1[int, time.Duration]

RetryDelayFunc 根据已尝试次数计算下一次重试前的等待时间。

Directories

Path Synopsis
Package dsync_etcd 提供基于 ETCD 的 dsync add-in 实现。
Package dsync_etcd 提供基于 ETCD 的 dsync add-in 实现。
Package dsync_redis 提供基于 Redis 的 dsync add-in 实现。
Package dsync_redis 提供基于 Redis 的 dsync add-in 实现。

Jump to

Keyboard shortcuts

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