Distributed ID Generate Service
ID生成器
为了保证多机房部署数据的一致性,需要一个全局ID生成器。
git clone github.com/taledog/taleid
cd taleid
go run cmd/idRedis/main.go
# 启动依赖存储
docker-compose up -d
# 运行http协议客户端
go run cmd/idHttp/main.go
# 查询id
curl 'http://127.0.0.1:7000/next' -d 'app=ugc&db=topic'
# 得到 {"id":1}
redis-server
使用docker-compose启动zk集群
zkCli
create /taleid/0 'master data center'
create /taleid 'rabbit id root'
cd tools/zoo && docker-compose up -d
使用命令行启动
# 修改 tool/zoo/Makefile 中的 ZKSERVER
vim tools/zoo/Makefile
make start
zk需要基础目录 /taleid/{机房ID}/{项目}
zkCli
create /taleid/0 'master data center'
create /taleid 'rabbit id root'
cd tools/zoo && docker-compose up -d
- /next
获取下一个id
curl 'http://127.0.0.1:7000/next' -d 'app=ugc&db=topic'
- /last
最后一个id
curl 'http://127.0.0.1:7000/last?app=ugc&db=topic'
- /max
最大的id
curl 'http://127.0.0.1:7000/max?app=ugc&db=topic'
- /remainder
剩余数量
curl 'http://127.0.0.1:7000/remainder?app=ugc&db=topic'
- 基于redis发号DEMO
- 实现数字生成器
- 使用etcd 作为发号的存储
- 完善预取逻辑
- 提供预览版本做性能和可用性测试
- 使用zk作为发号的存储
- redis协议支持
- 使用锁替换channel 减少内存占用
- toml管理配置
- 可用性测试,zk/etcd 短时间故障,比如超时或者选主
- 将/taleid/[dc]/[db] 增加层级/taleid/[dc]/[db]/[table]
- andrew-d_id
- bear
- dhetis
- distributed-unique-id
- flike_idgo
- fyllo
- get_uid
- go-id-alloc
- go-id-builder
- go-katsubushi
- go-unique
- goSnowFlake
- goimpulse
- hikenote_idgenerator
- id
- idCreator
- idGenerator
- id_publisher
- idalloc
- idgen
- idgo
- idleaf
- ids
- igener
- indigo
- kala
- libxx_id
- mazhaoyong_idgenerator
- numerical-id-generator
- redis-id-generator
- shopexguid
- the-anna-project_id
- tokenserver
- upid
- zkUid