请选择 进入手机版 | 继续访问电脑版

天画项目-Idgenerator的开源重构(上)

[复制链接]
丁翼 发表于 2021-1-2 19:00:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、配景&需求

1.1 配景

我在建立一个租房平台,举行基于租房业务的架构实践。在写业务代码的时候发现我需要一个ID生成器用于生成各种ID和票据编号信息。
1.2 需求


  • ID生成器基于分布式打造,满意高可用性
  • 支持分库分表ID生成的需求
  • 支持各种业务票据编号生成的管理需求
  • 具有可视化设置页面
  • 只管找开源并满意上述需求的项目,万不得已不自己开辟
梳理完我的需求之后我开始了在全网寻找ID生成器项目之旅。
二、技能选型

2.1 分布式ID生成器概览

分布式ID生成器的方案之前调研过,起码有6种,单说ID生成器则有UUID和snowFlake.这里简朴摆列下实现方案:

  • UUID 生成
  • snowFlake算法生成
  • 基于mysql 自增主键实现
  • 基于redis 自增实现
  • 基于zookeeper 文件序号实现
  • 基于封装的美团开源Leaf实现
  • 基于封装的滴滴开源Tinyid
2.2 自建 or 鉴戒

除了上面的生成器方案,我也调研了git上的其他开源项目,这里给出一些git所在:
https://gitee.com/zmds/ecp-uid.git
https://gitee.com/simpleweb/id-generator.git
https://github.com/haozi2015/id-generator.git
2.3 ID-generator项目

上面都是比力优秀的分布式ID生成实践项目,这里我对https://github.com/haozi2015/id-generator.git
这个项目比力感兴趣。通过对这个项目的深入相识确实满意了我最初对ID生成的需求。背面我开始了基于这个项目的应用实战过程。
三、当地应用

3.1 当前项目结构&模块


  • 核心依赖关系

图(1)核心依赖关系,出自原作者github readme.

  • 核心流程图

                    图(2)核心流程图,出自原作者github readme.

  • 项目结构和依赖

3.2 中间件依赖


  • 注册中心:ZooKeeper、Eureka多种注册中心
  • 数据库存储:Mysql
  • 缓存:Redis
3.3 启动并设置ID生成规则


  • 启动流程
由于服务依赖缓存大概数据库,因此需要先启动数据库大概缓存,这里我们使用redis作为存储,
1.先启动当地的redis服务。
2.启动服务之前先将common/core/metric 工程install到当地
3.启动dashbord工程,访问http://localhost:6082/,这个工程雷同与ID设置管理的控制台,所以单独起一个springboot服务,这里前端js加载需要一定的时间,因此首次访问需要等一小会儿。
4.在可视化页面中设置一定规则,如下图:

5.启动id-generator-simple工程,这里相当于id-generator工程对外袒露的api服务,将控制台和ID获取分为两个工程,增加了可用性。
6.访问http://localhost:6080/generate/id?key=&num=,大概访问http://localhost:6080/generate/guid?num=即可看到生成的ID
3.4 简朴总结

这个ID-generator工程以springboot的方式构建,同时支持融合主流框架,并具有简朴的可视化页面设置,因此可以举行二次开辟和集成。
 

来源:https://blog.csdn.net/u010504064/article/details/112065581
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )