推荐两款好用开源分布式id生成器

推荐两款好用开源分布式id生成器

1.Vesta

1.1Vesta简介

  Vesta是一款通用的ID产生器,互联网俗称统一发号器,它具有全局唯一、粗略有序、可反解和可制造等特性,它支持三种发布模式:嵌入发布模式、中心服务器发布模式、REST发布模式,根据业务的性能需求,它可以产生最大峰值型和最小粒度型两种类型的ID,它的实现架构使其具有高性能,高可用和可伸缩等互联网产品需要的质量属性,是一款通用的高性能的发号器产品。

1.2项目地址

https://gitee.com/free/vesta-id-generator
https://gitcode.com/iweisi/vesta-id-generator/overview?utm_source=artical_gitcode&isLogin=1

1.3使用参考博客

https://blog.csdn.net/chenqiuge1984/article/details/80128916
https://blog.csdn.net/u011673769/article/details/120776650
https://blog.csdn.net/gitblog_00057/article/details/137166537
https://blog.csdn.net/isea533/article/details/79754970

1.4说明

  该开源项目已经不活跃了,社区官网都不见了,原始的项目地址也没了,上面的地址是之前使用的人搞的分支,基本跟作者原始代码没有啥差别,他的实现思路还是可以借鉴和学习的,可以把它的源码拉下来翻一翻,编译运行基本也会耍了。

2.CosId

2.1简介

CosId 旨在提供通用、灵活、高性能的分布式 ID 生成器。

  • CosIdGenerator : 单机 TPS 性能:1557W/s,三倍于 UUID.randomUUID(),基于时钟的全局趋势递增ID,可以同时支持一百万个实例。

  • SnowflakeId : 单机 TPS 性能:409W/s [JMH 基准测试], 主要解决 时钟回拨机器号分配取模分片不均匀 等问题并提供更加友好、灵活的使用体验。

  • SegmentId: 每次获取一段 (Step) ID,来降低号段分发器的网络IO请求频次提升性能。并提供多种号段分发器实现。

  • SegmentChainId:SegmentChainId (lock-free) 是对SegmentId的增强。性能可达到近似AtomicLong的TPS 性能:12743W+/s

    JMH 基准测试:

    https://cosid.ahoo.me/guide/faq/perf-test.html
    
    • PrefetchWorker 维护安全距离(safeDistance), 并且支持基于饥饿状态的动态safeDistance扩容/收缩。
    • 适应性:相比于 SegmentIdSegmentChainId 可以根据业务场景动态调整 Step 来提升性能。

2.1官网

https://cosid.ahoo.me/guide/introduction.html

2.3代码仓库地址

https://gitee.com/AhooWang/CosId
https://github.com/Ahoo-Wang/CosId

2.4说明

  CosId实现有段号、段号链、雪花等实现,还拓展了基于Redis、ZooKeeper、Jdbc、MongoDB、MyBatis、Sprng-Data-Jdbc、Activity、Flowable、Axon、ShardingSphere、Spring-Boot-Strater等id生成集成,CosId有两种分片算法:取模分片、时间范围分片,CosId还提供了友好的ID转换接口,官方文档也比较全,可以去官网看文档就可以轻松上手CosId。

CosId vs 美团Leaf的测试报告如下:

https://cosid.ahoo.me/guide/faq/Performance-CosId-Leaf.html

CosId vs 美团Leaf的测试报告结论:

  1. CosId (SegmentChainId) 性能是 Leaf (segment) 的 5 倍。
  2. CosId 、Leaf 的性能与号段步长(Step) 无关。
  3. CosId TPS 基本接近 AtomicLong

3.总结

  以上是我分享的两个开源好用的分布式id生成项目,不推荐使用Vesta,因为Vesta官网和源码仓库都不见了,估计是作者已经不维护了,推荐使用CosId ,CosId 官网文档详细齐全,社区也比较活跃,CosId还解决了时钟回拨的问题,它有一个时钟同步的操作,只要是时钟回拨了,会自动同步时钟检验,所以在使用雪花算法担心会有时钟回拨的问题,CosId 已经解决了该问题,所以可以放心使用。mybatisPlus的id生成策略默认使用雪花算法实现,但是也有可能会重复,之前的文章有分享如何解决mybatisPlus的雪花id生成重复的方法,可以去看之前写的文章,还有一个ORM框架也自带id生成的实现:mybatis-flex

https://mybatis-flex.com/zh/core/id.html

  mybatis-flex内置三种id生成实现:

  • uuid:通过 UUIDKeyGenerator 生成 UUID 作为数据库主键。
  • flexId:独创的 FlexID 算法生成数据库主键(了解更多信息请参阅源码)。
  • snowFlakeId:通过雪花算法(SnowFlakeIDKeyGenerator)生成数据库主键。

  我的分享到此结束了,希望对你有所启发和帮助,请一键三连,么么么哒!

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值