Documentation
¶
Index ¶
- Constants
- func Init()
- type DataBaseLocker
- func (locker *DataBaseLocker) AcquireLock(branchSession *session.BranchSession) bool
- func (locker *DataBaseLocker) CleanAllLocks()
- func (locker *DataBaseLocker) GetLockKeyCount() int64
- func (locker *DataBaseLocker) IsLockable(xid string, resourceID string, lockKey string) bool
- func (locker *DataBaseLocker) ReleaseGlobalSessionLock(globalSession *session.GlobalSession) bool
- func (locker *DataBaseLocker) ReleaseLock(branchSession *session.BranchSession) bool
- type LockManager
- type LockStore
- type LockStoreDataBaseDao
- func (dao *LockStoreDataBaseDao) AcquireLock(lockDOs []*model.LockDO) bool
- func (dao *LockStoreDataBaseDao) AcquireLockByLockDO(lockDO *model.LockDO) bool
- func (dao *LockStoreDataBaseDao) GetLockCount() int64
- func (dao *LockStoreDataBaseDao) IsLockable(lockDOs []*model.LockDO) bool
- func (dao *LockStoreDataBaseDao) UnLock(lockDOs []*model.LockDO) bool
- func (dao *LockStoreDataBaseDao) UnLockByLockDO(lockDO *model.LockDO) bool
- func (dao *LockStoreDataBaseDao) UnLockByXIDAndBranchID(xid string, branchID int64) bool
- func (dao *LockStoreDataBaseDao) UnLockByXIDAndBranchIDs(xid string, branchIDs []int64) bool
- type MemoryLocker
- func (ml *MemoryLocker) AcquireLock(branchSession *session.BranchSession) bool
- func (ml *MemoryLocker) CleanAllLocks()
- func (ml *MemoryLocker) GetLockKeyCount() int64
- func (ml *MemoryLocker) IsLockable(xid string, resourceID string, lockKey string) bool
- func (ml *MemoryLocker) ReleaseGlobalSessionLock(globalSession *session.GlobalSession) bool
- func (ml *MemoryLocker) ReleaseLock(branchSession *session.BranchSession) bool
- type RowLock
Constants ¶
View Source
const ( BatchDeleteLockByBranchID = `delete from lock_table where xid = ? AND branch_id = ?` GetLockDOCount = "select count(1) as total from lock_table" )
View Source
const BucketPerTable = 128
View Source
const LOCK_SPLIT = "^^^"
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DataBaseLocker ¶
type DataBaseLocker struct {
LockStore LockStore
}
func (*DataBaseLocker) AcquireLock ¶
func (locker *DataBaseLocker) AcquireLock(branchSession *session.BranchSession) bool
func (*DataBaseLocker) CleanAllLocks ¶
func (locker *DataBaseLocker) CleanAllLocks()
func (*DataBaseLocker) GetLockKeyCount ¶
func (locker *DataBaseLocker) GetLockKeyCount() int64
func (*DataBaseLocker) IsLockable ¶
func (locker *DataBaseLocker) IsLockable(xid string, resourceID string, lockKey string) bool
func (*DataBaseLocker) ReleaseGlobalSessionLock ¶
func (locker *DataBaseLocker) ReleaseGlobalSessionLock(globalSession *session.GlobalSession) bool
func (*DataBaseLocker) ReleaseLock ¶
func (locker *DataBaseLocker) ReleaseLock(branchSession *session.BranchSession) bool
type LockManager ¶
type LockManager interface {
// AcquireLock Acquire lock boolean.
AcquireLock(branchSession *session.BranchSession) bool
// ReleaseLock Unlock boolean.
ReleaseLock(branchSession *session.BranchSession) bool
// GlobalSession 是没有锁的,所有的锁都在 BranchSession 上,因为
// BranchSession 才持有资源,释放 GlobalSession 锁是指释放它所有
// 的 BranchSession 上的锁.
// ReleaseGlobalSessionLock Unlock boolean.
ReleaseGlobalSessionLock(globalSession *session.GlobalSession) bool
// IsLockable Is lockable boolean.
IsLockable(xid string, resourceID string, lockKey string) bool
// CleanAllLocks Clean all locks.
CleanAllLocks()
GetLockKeyCount() int64
}
func GetLockManager ¶
func GetLockManager() LockManager
type LockStore ¶
type LockStore interface {
AcquireLockByLockDO(lockDO *model.LockDO) bool
AcquireLock(lockDOs []*model.LockDO) bool
UnLockByLockDO(lockDO *model.LockDO) bool
UnLock(lockDOs []*model.LockDO) bool
UnLockByXIDAndBranchID(xid string, branchID int64) bool
UnLockByXIDAndBranchIDs(xid string, branchIDs []int64) bool
IsLockable(lockDOs []*model.LockDO) bool
GetLockCount() int64
}
type LockStoreDataBaseDao ¶
type LockStoreDataBaseDao struct {
// contains filtered or unexported fields
}
func (*LockStoreDataBaseDao) AcquireLock ¶
func (dao *LockStoreDataBaseDao) AcquireLock(lockDOs []*model.LockDO) bool
func (*LockStoreDataBaseDao) AcquireLockByLockDO ¶
func (dao *LockStoreDataBaseDao) AcquireLockByLockDO(lockDO *model.LockDO) bool
func (*LockStoreDataBaseDao) GetLockCount ¶
func (dao *LockStoreDataBaseDao) GetLockCount() int64
func (*LockStoreDataBaseDao) IsLockable ¶
func (dao *LockStoreDataBaseDao) IsLockable(lockDOs []*model.LockDO) bool
func (*LockStoreDataBaseDao) UnLock ¶
func (dao *LockStoreDataBaseDao) UnLock(lockDOs []*model.LockDO) bool
func (*LockStoreDataBaseDao) UnLockByLockDO ¶
func (dao *LockStoreDataBaseDao) UnLockByLockDO(lockDO *model.LockDO) bool
func (*LockStoreDataBaseDao) UnLockByXIDAndBranchID ¶
func (dao *LockStoreDataBaseDao) UnLockByXIDAndBranchID(xid string, branchID int64) bool
func (*LockStoreDataBaseDao) UnLockByXIDAndBranchIDs ¶
func (dao *LockStoreDataBaseDao) UnLockByXIDAndBranchIDs(xid string, branchIDs []int64) bool
type MemoryLocker ¶
type MemoryLocker struct {
LockMap *sync.Map
// 高流量下,锁资源越多,BucketHolder 的性能越下降
BucketHolder *sync.Map
LockKeyCount int64
}
func (*MemoryLocker) AcquireLock ¶
func (ml *MemoryLocker) AcquireLock(branchSession *session.BranchSession) bool
func (*MemoryLocker) CleanAllLocks ¶
func (ml *MemoryLocker) CleanAllLocks()
func (*MemoryLocker) GetLockKeyCount ¶
func (ml *MemoryLocker) GetLockKeyCount() int64
func (*MemoryLocker) IsLockable ¶
func (ml *MemoryLocker) IsLockable(xid string, resourceID string, lockKey string) bool
func (*MemoryLocker) ReleaseGlobalSessionLock ¶
func (ml *MemoryLocker) ReleaseGlobalSessionLock(globalSession *session.GlobalSession) bool
func (*MemoryLocker) ReleaseLock ¶
func (ml *MemoryLocker) ReleaseLock(branchSession *session.BranchSession) bool
Click to show internal directories.
Click to hide internal directories.