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>