idgo - 一個基于 MySQL 的輕量級 ID 生成器( Golang)
idgo 簡介
idgo是一個利用MySQL批量生成ID的ID生成器, 主要有以下特點:
- 每次通過事務批量取ID,性能較高,且不會對MySQL造成壓力.
- 當ID生成器服務崩潰后,可以繼續生成有效ID,避免了ID回繞的風險. </ul>
業界已經有利于MySQL生成ID的方案,都是通過:
REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();這種方式生成ID的弊端就是每生成一個ID都需要查詢一下MySQL,當ID生成過快時會對MySQL造成很大的壓力. 這正是我寫這個lib庫的原因.
idgo服務正確性和高可用保障措施
1. 壓力測試結果
壓測環境
| 類別 | 名稱 | </tr> </tbody>|||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| OS | CentOS release 6.4 | </tr>|||||||||||||||||||||||||
| CPU | Common KVM CPU @ 2.13GHz | </tr>|||||||||||||||||||||||||
| RAM | 2GB | </tr>|||||||||||||||||||||||||
| DISK | 50GB | </tr>|||||||||||||||||||||||||
| Mysql | 5.1.73 | </tr> </tbody> </table>