idgo - 一个基于 MySQL 的轻量级 ID 生成器( Golang)

2015-12-25 09:04:33 +08:00
 flikecn
idgo 是一个利用 MySQL 批量生成 ID 的 ID 生成器, 主要有以下特点:

每次通过事务批量取 ID,性能较高,且不会对 MySQL 造成压力.
当 ID 生成器服务崩溃后,可以继续生成有效 ID,避免了 ID 回绕的风险.
业界已经有利于 MySQL 生成 ID 的方案,都是通过:

REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
这种方式生成 ID 的弊端就是每生成一个 ID 都需要查询一下 MySQL,当 ID 生成过快时会对 MySQL 造成很大的压力. 这正是我写这个 lib 库的原因.

感兴趣的可以看看:

https://github.com/flike/idgo
4187 次点击
所在节点    分享创造
4 条回复
nasta
2015-12-25 10:23:51 +08:00
采用事务的话会加锁,另外一个方案只是增加一步 select ,直觉感觉后者更好啊。
flikecn
2015-12-25 10:39:41 +08:00
@nasta 主要是不能批量,每次生成一个 id ,都会请求 MySQL 。批量的话可以大大减轻 MySQL 压力。
nasta
2015-12-25 12:28:48 +08:00
@flikecn 到没有考虑这种情况,学习了
wy315700
2015-12-25 13:19:29 +08:00
uuid_short

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/245987

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX