1 Star 0 Fork 0

lightning / distributed-id-service-integration

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

distributed-id-service-integration

介绍

全局唯一ID/单号生成系统,生产级。

软件架构

软件架构说明 1 全局ID: 输入图片说明 输入图片说明

2 全局单号: 输入图片说明 输入图片说明

安装教程

安装: 1 下载安装包:https://pan.baidu.com/s/1jJF5mUvb2tlpMzRcoJHi0g

2 解压缩ROOT.war,修改类路径下的application.properties文件,增加如下配置:

#配置注册中心

eureka.client.serviceUrl.defaultZone = http://eureka1/,http://eureka2/

eureka.client.healthcheck.enabled = true

eureka.client.fetchRegistry = true

eureka.client.registry-fetch-interval-seconds = 5

#eureka-service-url-poll-interval-seconds = 20

eureka.instance.lease-renewal-interval-in-seconds = 10

eureka.instance.lease-expiration-duration-in-seconds = 30

#eureka.instance.hostname = localhost

eureka.instance.instance-id = \${spring.cloud.client.ipAddress}:\${spring.application.name}:\${server.port}:\${_version}

eureka.instance.metadata-map.h-x-app-version = \${_version}

eureka.instance.preferIpAddress = true

#应用基础配置

spring.output.ansi.enabled = ALWAYS

application.id = 10246

server.port = 10246

spring.application.name = distributed-id-service

#此应用可以不用配置 spring.application.key =......

spring.output.ansi.enabled = ALWAYS

spring.http.encoding.charset = UTF-8

spring.http.encoding.enabled = true

spring.http.encoding.force = true

feign.client.config.default.connectTimeout = 3000

feign.client.config.default.readTimeout = 10000

feign.hystrix.enabled = true

hystrix.command.default.circuitBreaker.errorThresholdPercentage = 95%

hystrix.command.default.circuitBreaker.requestVolumeThreshold = 20

hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds = 5000

hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests = 1000000

hystrix.command.default.execution.isolation.strategy = SEMAPHORE

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 14000

hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests = 1000000

hystrix.command.default.metrics.rollingStats.numBuckets = 10

hystrix.command.default.metrics.rollingStats.timeInMilliseconds = 10000

hystrix.command.default.requestCache.enabled = true

ribbon.ConnectTimeout = 3000

ribbon.MaxAutoRetriesNextServer = 0

ribbon.ReadTimeout = 10000

cat.enabled = false

auth.service.enabled = false

auth.service.token.refresh.enabled = false

management.security.enabled = false

management.context-path = /mcpt

endpoints.enabled = true

endpoints.shutdown.enabled = false

endpoints.health.enabled = true

userContext.enabled = false

back.userContext.enabled = false

druid.driver-class-name = com.mysql.jdbc.Driver

druid.url = jdbc:mysql://xxxx:3306/distributed_id?useOldAliasMetadataBehavior=yes&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8

druid.username = xxxx

druid.password = xxxx

druid.initial-size = 1

druid.max-active = 20

druid.max-wait = 60000

druid.filters = stat

druid.min-idle = 3

druid.time-between-eviction-runs-millis = 60000

druid.min-evictable-idle-time-millis = 300000

druid.validation-query = select 1

druid.test-while-idle = true

druid.test-on-borrow = false

druid.test-on-return = false

#druid.connection-properties = clientEncoding=UTF-8;serverTimezone=Asia/Shanghai

druid.connection-properties = clientEncoding=UTF-8

mybatis.type-aliases-package = om.homedo.**.po

mybatis.mapper-locations = classpath:mapper/*_mapper.xml

mapper.identity = mysql

#默认开启

#generate.id.enable = true

#默认开启

#generate.no.enable = true

#zookeeper ip地址,多个一英文逗号分隔

generate.no.zkAddress = zkIpxxxxx

#zookeeper port 2181

generate.no.zkPort = zkPortxxxx

x-springfox.documentation.swagger.v2.basePackage = com.homedo.microservice.distributed.id.service.remote.api.impl

x-springfox.documentation.swagger.v2.title = 分布式ID服务相关接口

x-springfox.documentation.swagger.v2.description = 提供完整的接口文档,可以模拟接口操作

#注意:加粗的属性,需要替换成自己真实的配置

3 数据库脚本

CREATE DATABASE `distributed_id` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

CREATE TABLE `leaf_alloc` (

`biz_tag` varchar(128) NOT NULL DEFAULT '',

`max_id` bigint(20) NOT NULL DEFAULT '1',

`step\` int(11) NOT NULL,

`description` varchar(256) DEFAULT NULL,

`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`biz_tag`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4 把修改后的ROOT文件夹放入tomcat等容器中,启动tomcat即可

使用说明

  • 全局唯一性
  • 趋势递增:有序。
  • 单调递增:下一个ID一定大于上一个ID
  • 信息安全:单号无规则、不规则。

在线Demo:

1 全局ID: http://180.76.250.110:10246/distributed-id-service/generateId/test-id

2 全局单号: http://180.76.250.110:10246/distributed-id-service/generateNo/test-no

详述: 一 DISTRIBUTED-ID-SERVICE 提供生成服务

1 全局ID生成接口

   /distributed-id-service/generateId/{key}

  key对应业务标志:格式为 “数据库名_表名”,例如库名是 framework_gateway,表名是e_user,对应的key为 framework_gateway_e_user (注意:严格区分大小写,一个字母的大小写不同即代表是不同的业务标志,建议传的时候全转小写或大写)

  建表注意:

      1.1 表主键不能是自增的

      1.2 新表可以直接接入,从1开始全局递增

      1.3 老表接入,需要预设一个起始值,防止与库中已有的主键值产生冲突

      1.4 新表有默认插入数据的,也须预设一个起始值,防止与库中已有的主键值产生冲突

2 全局单号生成接口,返回单号是长度19的纯数字。调用方可以根据自身实际需求,自定义前缀标志(注意:不加前缀标志此单号也是全局唯一的)

  /distributed-id-service/generateNo/{key}

  key对应业务标志,可以是服务名称,暂仅做排错标志

参与贡献

码云特技

空文件

简介

全局唯一ID/单号生成系统,生产级。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/sanfenchunse/distributed-id-service-integration.git
git@gitee.com:sanfenchunse/distributed-id-service-integration.git
sanfenchunse
distributed-id-service-integration
distributed-id-service-integration
master

搜索帮助