唯一ID算法Snowflake
相信大家都不墨生,他是Twitter公司提出来的算法。非常广泛的应用在各种业务系统里。也因为Snowflake
的灵活性和缺点,对他的改造层出不穷,比百度的UidGenerator、美团的Leaf、索尼的Sonyflake等等。这篇帖子主要是讲一下原生的Snowflake
算法、缺点及改造方案,并分析索尼的Sonyflake源码对原生Snowflake
的改造,
原生Snowflake
原生Snowflake
算法使用一个64 bit
的整形数据,根据当前的时间来生成ID。
原生Snowflake
结构如下:
- 因为最高位是标识位,为1表示为负数,所以最高位不使用。
- 41bit 保存时间戳,精确到毫秒。也就是说最大可使用的年限是69年。
- 10bit 的机器