- 授权协议: MIT
- 开发语言: Google Go
- 操作系统: 跨平台
- 软件首页: https://github.com/flike/idgo
软件介绍
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. 压力测试结果
压测环境
| 类别 | 名称 |
|---|---|
| OS | CentOS release 6.4 |
| CPU | Common KVM CPU @ 2.13GHz |
| RAM | 2GB |
| DISK | 50GB |
| Mysql | 5.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
C++数据结构与算法
[美]乔兹德克(Adam Drozdek) / 徐丹、吴伟敏 / 清华大学出版社 / 2014-10-1 / 63.00元
本书全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。一起来看看 《C++数据结构与算法》 这本书的介绍吧!
