java將時間戳轉(zhuǎn)化為時間格式 javaWeb 在系統(tǒng)高并發(fā)的情況下生成有序流水號?
javaWeb 在系統(tǒng)高并發(fā)的情況下生成有序流水號?1. 如果題主不要求ID是數(shù)字,建議使用最簡單的,也就是UUID,包含了機器碼,時間戳,隨機數(shù)等,不過UUID最后生成的是全局唯一的字符串,不是整數(shù)
javaWeb 在系統(tǒng)高并發(fā)的情況下生成有序流水號?
1. 如果題主不要求ID是數(shù)字,建議使用最簡單的,也就是UUID,包含了機器碼,時間戳,隨機數(shù)等,不過UUID最后生成的是全局唯一的字符串,不是整數(shù),并且看起來是無序的。
2. MySQL自增ID的,使用一張表存放各種業(yè)務id,然后每個分布式系統(tǒng)插入一條id之后,生成一千萬條局部的數(shù)字與這個id拼接,那么每個系統(tǒng)取到一個id,就相當于生成了一千萬條id,足夠使用很長一段時間。這一千萬條id可以事先定義好,在系統(tǒng)啟動時就放入內(nèi)存中,由于只是id,并不會占用多大的內(nèi)存,MySQL可以搭建成集群,并不影響自增id的使用。
3. 與MySQL自增ID類似,使用Redis的incr實現(xiàn)自增。每個分布式系統(tǒng)像Redis使用incr插入一條id之后,生成一千萬條局部的數(shù)字與這個id拼接,那么每個系統(tǒng)取到一個id,就相當于生成了一千萬條id,足夠使用很長一段時間。這一千萬條id可以事先定義好,在系統(tǒng)啟動時就放入內(nèi)存中。由于只是id,并不會占用多大的內(nèi)存,Redis也可以搭建成集群,并不影響自增id的使用。
4. twitter的snowflake算法,與UUID類似,包含了機器碼,時間戳,隨機數(shù)等,不過最后生成的是64位的整數(shù),可以滿足很多分布式系統(tǒng)的要求。如果要求id是整數(shù)的話,建議不要使用UUID而用snowflake。