7个版本 (4个重大更新)
0.5.0 | 2020年8月20日 |
---|---|
0.4.0-beta.1 | 2020年5月31日 |
0.3.0 | 2020年1月25日 |
0.2.1 | 2020年1月15日 |
0.1.1 | 2019年11月25日 |
#1893 in 异步
每月21次下载
39KB
938 代码行
Leaves:分布式ID生成服务
这是Leaf的非官方端口。
🏠 主页
功能
- 在段模式中生成ID
- 在雪花模式中生成ID
- mysql
- redis
- postgresql
- sqlite
- mongodb
- 使用mysql或postgres时,运行时与平台无关(tokio或async-std)
- 懒模式:懒加载leaf标签,需要手动删除
- http服务器或rpc服务(实际上需要你自己实现 😂)
待办事项
- 性能
- 正确性
示例
启用mysql
和runtime-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