全局唯一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即可
在线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对应业务标志,可以是服务名称,暂仅做排错标志
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。