snowflake 算法浅谈

无意中看见 美团的Leaf,想起之前自己写的 snowflake ,感觉自己实现的方式也不差,如有不对,烦请大佬斧正,嘿嘿

下面用 workId 代表 「机器ID(占5比特)+ 机房ID(占5比特)」

其实主要就是如何在分布式环境下每个服务实例生成唯一workId,下面讲讲我的方案,比较简单

实例启动时,在初始化过程中去redis INCR一个key,将返回值保存在本地内存中,做为workId,然后在redis里给这个key设置一个业务合适的超时时间,一般远大于服务升级发布时间

其实我觉得,无非是利用第三方服务来保证数据唯一性,比如mysql、redis、zookeeper、或者自建提供workId的服务
就好像分布式锁一样

你可能感兴趣的:(snowflake 算法浅谈)