這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。snowflake的結構如下(每部分用-分開):0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000第一位為未使用,接下來的41位為毫秒級時間(41位的長度可以使用69年),然後是5位datacenterId和5位workerId(10位的長度最多支援部署1024個節點) ,最後12位是毫秒內的計數(12位的計數順序號支援每個節點每毫秒產生4096個ID序號)一共加起來剛好64位,為一個Long型。(轉換成字串後長度最多19)snowflake產生的ID整體上按照時間自增排序,並且整個分布式系統內不會產生ID碰撞(由datacenter和workerId作區分),並且效率較高。經測試snowflake每秒能夠產生26萬個ID。# go-id-workerIdWorker in golang.go-id-worker is an id creator. For generating an global unique id. The type of id is int64.## You can get it like this.```go get "github.com/gitstliu/go-id-worker"```## And import it like this.```import ( "github.com/gitstliu/go-id-worker")```## Create and use an idWorker like this.```currWoker := &idworker.IdWorker{} currWoker.InitIdWorker(1000, 1)newId := currWoker.NexiId()```236 次點擊 ∙ 1 贊