e12cb6f6d4543bdd99cf40880de3f55cbf91265e
\345\270\270\350\247\201\351\227\256\351\242\230/\345\210\206\345\270\203\345\274\217id\347\224\237\346\210\220\344\274\230\345\214\226.md
... | ... | @@ -40,7 +40,8 @@ public synchronized long nextId() { |
40 | 40 | } |
41 | 41 | ``` |
42 | 42 | 由上述的代码可知,本质上生成一个分布式id主要包括3段:41bit时间戳 + 10bit机器标识(这里的实现是5bit的机器码+5bit数据中心码)+ 12bit的序列号 |
43 | -[[/uploads/Home/id_generator_img.png]] |
|
43 | + |
|
44 | +[[http://iidp.chinasie.com:9999/iidpminio/id_generator/id_generator_img.png]] |
|
44 | 45 | |
45 | 46 | - 已有实现的问题 |
46 | 47 | - 没有使用10bit机器标识。目前的机器码和数据中心码都是写死为1,在所有场景下这10bit完全一样,如果在分布式环境下,遇到一些机器时间漂移的情况,虽然趋势shi递增,但不是绝对递增,那么很可能生成重复的id; |
... | ... | @@ -69,7 +70,7 @@ public synchronized long nextId() { |
69 | 70 | ``` |
70 | 71 | 为了简单,直接修改timeGen函数,让其返回时间一样,则生成的id都一样。 |
71 | 72 | |
72 | -[[/uploads/Home/id_gen_test.png]] |
|
73 | +[[http://iidp.chinasie.com:9999/iidpminio/id_generator/id_gen_test.png]] |
|
73 | 74 | |
74 | 75 | #### 优化 |
75 | 76 | - 生成机器id。通过获取机器MAC地址来生成 |