Butterfly(蝴蝶)是一个超高性能的发号器框架。起名Butterfly是用世界上没有完全相同的蝴蝶翅膀来表示该算法的唯一性。框架通过引入多种新的方案不仅解决了雪花算法存在的所有问题,而且还能够提供比雪花算法更高的性能。在单机版QPS理论值为51.2(w/s)这种情况下,新的方案在一些机器上可达 1200(w/s) 甚至更高。
雪花算法是twitter提出的分布式id生成器方案,但是有三个问题,其中前两个问题在业内很常见:
- 时间回拨问题
- 机器id的分配和回收问题
- 机器id的上限问题
其中业内针对前两个问题都有个自己的解决方式,但是都不是很完美,或者说没有完全解决。我们这里从新的思路出发,通过改造雪花算法以及其他相关方式彻底解决了以上的三个问题。
该方案算是对雪花算法比较完美的一种实现方式。方案请见方案介绍
使用场景说明
在发号器内,业内常用的是有这么几种
- 单机雪花:性能高,但是有时间回拨问题
- 单buffer + db:性能还可以,但是有buffer切换的延迟,一般都是用双buffer
- 双buffer + db:性能不错,不同业务根据对应的buffer调整,需要人工接入,存在定制化,不过一般业内都是用这个
对于一般的业务场景,以上业内都是可以满足,所以一般情况下使用业内的就可以,但是对于一些并发需要非常高的情况,方案3的调整需要人工自己调整,方案1有雪花问题,这个时候才可以考虑使用改进版雪花
