优点:数据库生成的ID趋势递增,高可用实现方式简单
缺点:需要独立部署数据库,成本高,有性能瓶颈,添加机器要重新设置步长,n个db要设置步长是n,自增初始值是1到n
3:基于数据库批量生成id
由于单个获取自增...是否达到扩容位点和切换buffer位点,在达到扩容位点时(80%)通过事件模式通知扩容buffer2(闲置buffer),如果buffer1(命中buffer)中id用完则触发命中buffer自动切换,...利用双检锁缓存当天年月日字符串
调用代理IdBuffer申请生成数字型id
代理层维护双buffer的扩容和自动切换,调用命中IdBuffer生成数字id
最后DoubleBufferIdWorker加入业务含义并返回特定格式的...我们设置步长是5,自动扩容阈值时0.8(命中buffer的id使用80%时触发闲置buffer扩容),从执行结果截图中我们看到,初始命中是buffer1,生成四个id之后到达扩容阈值触发buffer2自动批量加载...id,生成第5个id时buffer1中存储的id已经用完,触发命中buffer自动切换到buffer2,中间使用到80%的时候又会触发buffer1自动批量获取id,循环运行下去。