7个版本 (4个重大更新)

0.5.0 2020年8月20日
0.4.0-beta.12020年5月31日
0.3.0 2020年1月25日
0.2.1 2020年1月15日
0.1.1 2019年11月25日

#1893 in 异步

每月21次下载

MIT 许可证

39KB
938 代码行

Leaves:分布式ID生成服务

这是Leaf的非官方端口。

🏠 主页

Latest version

功能

  • 在段模式中生成ID
  • 在雪花模式中生成ID
  • mysql
  • redis
  • postgresql
  • sqlite
  • mongodb
  • 使用mysql或postgres时,运行时与平台无关(tokio或async-std)
  • 懒模式:懒加载leaf标签,需要手动删除
  • http服务器或rpc服务(实际上需要你自己实现 😂)

待办事项

  • 性能
  • 正确性

示例

启用mysqlruntime-tokio功能

use leaves::dao::MySqlLeafDao;
use leaves::{SegmentIDGen, Config, Result};

#[tokio::main]
async main() -> Result<()> {
    let dao = Arc::new(MySqlLeafDao::new("mysql://...").await?);
    let mut service = SegmentIDGen::new(dao, Config::new());
    service.init().await?;
    let tag = 1;
    for _ in 0..1000 {
        println!("{}", service.get(tag).await?);
    }
}

基准测试

在180ms内生成1,000,000个ID(本地MongoDB与R7 3700X)

依赖关系

~1–25MB
~358K SLoC