开发者社区> 问答> 正文

分布式ID生成器服务 did简介

分布式ID生成器服务 did简介

展开
收起
kun坤 2020-04-23 19:17:06 1251 0
1 条回答
写回答
取消 提交回答
  • 这里介绍一个分布式ID生成器rpcxio/did),它基于snowflake的算法,但是提供了可以定制的算法,支持初始化设置worker id和自增值的bit数。

    因为它是一个中心化的ID生成器服务,所以每次获取ID都有额外的网络开销,所以最好一次申请一批数据,然后client在本地使用,用不了丢掉即可,所以did服务还提供批量获取ID的方法。

    安装did的服务需要定时的和时间服务器进行同步,这个短时间的回拨不会影响ID的产生。 重启服务一般也没有问题,因为各个节点和时间服务器的误差在毫秒左右,而重启至少是秒级的操作,所以不会有重复的ID产生。 唯一怕的时候手工将时间回拨一个很长的时间(几个小时、几天),然后这个时候再重启服务,一般生产环境中也不会这么去做。

    因为可以部署多个did服务做集群,所以可以提供容错机制,少量did节点宕机不会影响ID生成服务的访问。

    因为snowflake算法性能优异,所以ID生成服务部署的节点不需要很多,每个机房只需要几台机器就可以了,所以你可以压缩worker id占用的bit数,扩大自增值占用的bit数。

    测试中,单个节点可以提供12万ID/秒的产生速度,而如果采用批量获取100ID的话,可以取得接近三百万ID/秒的性能。

    1、256个client并发,每次只获取1个ID, ID的产生速度是 12万个ID/秒。
    ./bclient -addr 192.168.15.225:8972 -n 100000
    total IDs: 25600000, duration: 3m31.581592489s, id/s: 120993
    2、如果采用批量获取,尽量减少网络消耗,256个client并发,每次只获取100个ID, ID的产生速度是 297万个ID/秒。
    ./bclient -addr 192.168.15.225:8972 -n 1000000 -b 100
    total IDs: 256000000, duration: 1m26.178942509s, id/s: 2970563
    
    2020-04-23 19:17:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载