SEQSVR Go + MySQL 实现的 ID 生成服务 SEQSVR

agolangf • 1567 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
分布式:可任意横向扩展 高性能:分配 ID 只访问内存(到达上限会请求数据库一次) 易用性:对外提供 HTTP 服务 唯一性:MySQL 自增 ID,永不重复 高可靠:MySQL 持久化 本项目使用下列优秀的项目作为必要组件。 gopkg.in/yaml.v2 github.com/go-sql-driver/mysql github.com/satori/go.uuid **注意:需要在启动之前创建数据库并修改配置文件中数据库的配置。** go get 方式: 需保证 $GOPATH/bin 在系统 PATH 中。 单独编译: Docker 方式: Dockerfile 使用了 Docker 多阶段构建功能,需保证 Docker 版本在 17.05 及以上。详见:[Use multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/) 数据库名称可以自定义,修改 config.yml 即可。 然后导入以下 SQL 生成数据表。 配置文件使用 [YAML](http://yaml.org/) 格式。 可修改端口号及 MySQL 的配置。 本项目设计原理来自 携程技术中心 的[干货 | 分布式架构系统生成全局唯一序列号的一个思路](https://mp.weixin.qq.com/s/F7WTNeC3OUr76sZARtqRjw)。 服务初始化后第一次请求会在 MySQL 数据库中插入一条数据,以生成初始 ID。 后续的请求,都会在内存中进行自增返回,并且保证返回的 ID 不会超过设置的上限,到达上限后会再次从 MySQL 中更新数据,返回新的初始 ID 。 核心SQL
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
1567 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传