基于 MySQL 的 ID 生成器 idgo

码农软件 · 软件分类 · 其他开发相关 · 2019-10-19 09:44:11

软件介绍

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库的原因.

idgo服务正确性和高可用保障措施

1. 压力测试结果

压测环境

类别名称
OSCentOS release 6.4
CPUCommon KVM CPU @ 2.13GHz
RAM2GB
DISK50GB
Mysql5.1.73

本地mac连接远程该MySQL实例压测ID生成服务。 每秒中可以生成20多万个ID。性能方面完全不会有瓶颈。

2.ID生成正确性验证

模拟4个进程(cmd/example.go)以每秒生成100个ID的频率并发向MySQL IDGEN服务申请ID,并将生成的ID写入MySQL。 测试16小时后,生成330万个ID,未发现有重复ID。

3.ID生成服务宕机后的恢复方案

当idgo服务意外宕机后,可以切从库,然后将idgo对应的key加上适当的偏移量。

4. 使用方法

参考cmd/example.go文件使用, 用起来很简单. :)

编译并运行example.go

. ./dev.sh
make
./bin/cmd

本文地址:https://www.codercto.com/soft/d/17083.html

首席产品官1 从新手到行家

首席产品官1 从新手到行家

车马 / 机械工业出版社 / 2018-9-25 / 79

《首席产品官》共2册,旨在为产品新人成长为产品行家,产品白领成长为产品金领,最后成长为首席产品官(CPO)提供产品认知、能力体系、成长方法三个维度的全方位指导。 作者在互联网领域从业近20年,是中国早期的互联网产品经理,曾是周鸿祎旗下“3721”的产品经理,担任CPO和CEO多年。作者将自己多年来的产品经验体系化,锤炼出了“产品人的能力杠铃模型”(简称“杠铃模型”),简洁、直观、兼容性好、实......一起来看看 《首席产品官1 从新手到行家》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换