分布式并發(fā)下唯一ID的生成規(guī)則 (python 多線程模擬并發(fā) ,QPS以秒為單位, 不考慮 python GIL)
1.使用 redis 的 incr (redis 為單線程, 原子性操作)
1.incr 原子性操作即返回加1操作后的值,可直接使用。避免多操作而使用事務。
2.持久性:只有一個key,可開啟RDB/AOF,或者判斷在nosql key失效時,獲取DB表中最后一個生成的id并set寫入,保持可持續(xù)使用。
3.性能:內存操作,性能優(yōu)良
4.災難恢復,數據自動恢復,腳本檢測set進最后一個生成的ID
redis> SET mykey "10"
OK
redis> INCR mykey
(integer) 11
redis> GET mykey
"11"
2.使用 mysql 表的唯一自增主鍵 (可用雙實例/物理機 錯開id(奇偶數 +1/+2))
1.mysql的原子性,可保證自增列不會產生重復的id
2.持久性:存在于mysql數據表中,持久化于磁盤
3.性能:數據寫入操作,可用錯開id(+1/+2)雙寫