關於分布式 ZK ID 生成器

来源:10-13 全局主键

pinkyTseng

2020-01-14

老師 這邊我看了一下 首先想到的問題是這樣生成的id會是有順序的麼 後來我查了一下mycat的doc 老師課上講的應該是用分布式 ZK ID 生成器對吧

如果是的話 前面38位應該是時間戳 所以順序應該沒什麼問題 但是doc有些部分我始終看不明白
文件上寫
ID 结构:long 64 位ID 最大可占 63 位

  • |current time millis(微秒时间戳 38 位,可以使用 17 年)|clusterId(机房或者 ZKid通过配置文件配置 5 位)|instanceId(实例 ID可以通过 ZK 或者配置文件获取5 位)|threadId(线程 ID9 位) |increment(自增,6 位)

但是時間戳才38位 如果是微秒 那麼應該是大約 2的38次方/1000000/60/60/24/365 年 可是這樣根本不到
如果是文件微秒寫錯 因為millis應該是毫秒 那也應該是 大約 2的38次方/1000/60/60/24/365 年 但這樣也才8.7幾 要17年應該至少要39位才夠吧

這邊我看了很久一直想不明白 不知是不是有什麼地方會錯意了 再請老師指點迷津一下 十分感謝

還有就是 我的理解是它的可用多久時間應該是從服務起起來開始算經過多少毫秒麼
最後是 如果真的因為我有些地方搞錯 可用17年 那如果用這個的服務真的撐到17年過後了 這樣要怎麼處理呢

問題有點多 但我這些地方真的很困惑想很久 麻煩老師指點一下 再次萬分感謝老師 謝謝

写回答

1回答

神思者

2020-01-14

你这么一说我看了一下mycat手册,还真是这样的,可能是mycat手册写错了,应该是毫秒级的时间戳

0
3
神思者
回复
pinkyTseng
对,mycat文档写的有瑕疵
2020-01-15
共3条回复

阿里新零售数据库设计与实战 (升级版)

解锁“新零售”业务让数据库实战能力再上一层楼

2111 学习 · 701 问题

查看课程