http://127.0.0.1:8080/swagger-ui.html
- 先執行 src/main/resources/sql/init.sql 初始化資料庫
- 修改 src/main/resources/application.yml 連線資料
- 唯一性:
- 高效能:避免 ID 的生成效能成為系統的瓶頸
- 任性的ID前綴:需求方喜歡特定前綴作為 ID 開頭 ex: XXX000001
- 依賴 MySQL 維護當前序號最大值 (5.7.29)
- 利用 Row Lock 處理序號遞增
- 使用 User Defined Variables 取回當前交易最大值,降低 Row Lock 的時間
- 支持數字 ID 和前綴字串 ID
每秒可產生約1萬 ID ,效能依賴資料庫
優點
- 連續,不浪費ID
缺點
- 每次訪問資料庫,效能差
小技巧
- 可利用不同的前綴,避免競爭相同的鎖
所有執行緒共用一個 ID buffer,效能依賴機器硬體
純數字
每秒可產生約 1千萬左右 ID
前綴
每秒可產生約 5百萬左右 ID
優點
- 短時間內,只會訪問資料庫一次,大幅下降資料庫交易壓力
- 相較於 Multi Buffer 較不浪費 ID
缺點
- ID 連續性不高
- 系統重啟浪費 ID 數量
- 執行緒需要競爭鎖
執行緒各自有 ID buffer,效能依賴機器硬體
純數字
每秒可產生約 1億~2億5 ID
前綴
優點
- 短時間內,只會訪問資料庫一次,大幅下降資料庫交易壓力
- 利用 Java ThreadLocal 無鎖的方式產生 ID,效能極高
缺點
- ID 連續性較不高
- 系統重啟非常浪費 ID 數量
小技巧
- 自動計算 10 秒內需要多少 buffer 降低資料庫的壓力