#locking #distributed #postgresql #dls #cockroachdb

cocklock

在Postgres/CockroachDB之上实现分布式锁定机制的实现

1 个不稳定版本

0.1.0 2022年8月10日

#1990数据库接口

MIT 许可证

22KB
457

Cock Lock (Cockroach Locks)

这个项目没有更好的名字了

为CockroachDB和Postgres编写的纯Rust分布式锁定系统(DLS)。这个项目的动机是创建一个不使用Redis Redlock协议的DLS(因为我看到一些人在互联网上争论这个问题)。此项目还包含比传统Redlock实现更多的功能。



安装

尚未发布到crates.io,请稍后再查看。


用法

use std::thread::sleep;
use std::time::Duration;

use cocklock::{errors::CockLockError::NotAvailable, CockLock};

fn my_task() {
    println!("Doing my task.");
}

fn main() {
    let mut locker = CockLock::builder()
        .with_connection_strings(vec!["postgres://user:pass@localhost:5432/db"])
        .build()
        .unwrap();

    loop {
        match locker.lock("task", 10_000) {
            Ok(_) => my_task(),
            Err(err) => match err {
                NotAvailable => println!("Someone else is doing my task!"),
                _ => println!("Uh oh, some other error occurred: {err}")
            },
        };
        sleep(Duration::from_millis(1_000));
    }
}

许可证

MIT许可证

依赖项

~7–18MB
~280K SLoC