标准Snowflake算法将64个bit位分为三部分,41bit的时间戳,10bit的机器id,12bit的自增序列号.
除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用大约69.7年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。
但在高并发场景,当大量并发写时,会引起 SQL 阻塞,极大的影响性能,而且可能存在生成重复序列id的情况。
因此对算法进行优化,确保大量并发写的性能, 并且保证生成全局唯一id。