代码已经修改 调用方式 为restful请求  或者 feign请求  请参考 wiki:   http://192.168.120.46:8090/display/peixun/akucun+Guid

项目组 对接人员 采用的方式 版本 修改最后时间
订单 贺周群 工具类 1.0.20-SNAPSHOT 已修改,11月15日上线
支付 崔宏辉 工具类 本地 暂时不做修改
旧订单 王硕星 工具类 1.0.20-SNAPSHOT 已修改,最迟11月20日上线
旧版会员 蔡建 zuul akucun-base-data-new 11月15日修改

guid ID 18 三个环境

restful 调用方式
dev: http://192.168.120.97:8080/base/guid/31/31
test: http://172.19.1.198:8080/base/guid/31/31
prod: http://addr.infra.aikucun.com/base/guid/31/31

feign调用方式:

<dependency>
<groupId>com.akucun.base.data</groupId>
<artifactId>base-data-facade-stub</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

调用其中的接口:  com.akucun.base.data.stub.GuidRemote

已下内容已经过期 , 供参考

18位long型 ID生成算法snowflake原理:   https://segmentfault.com/a/1190000011282426

 

1) spring项目引用 akucun-common-base: 

<dependency>

<groupId>com.akucun</groupId>

<artifactId>akucun-common-base</artifactId>

<version>${com.akucun.cloud.base.version}</version>

</dependency>

当前版本 :

<com.akucun.cloud.base.version>0.0.1-SNAPSHOT</com.akucun.cloud.base.version>

2) 项目中添加如下类

PrimaryKeyGenerater.java

3) 项目启动添加参数

-Dguid.datacenter.id=2  -Dguid.machine.id=3

guid.datacenter.id 数据中心
guid.machine.id 数据中心中对应的服务器编号

4) 获取对应数据

SpringUtil.getBean(PrimaryKeyGenerater.class).nextId()

datacenter:  SpringUtil.getBean(PrimaryKeyGenerater.class).getDatacenterId()

machine: SpringUtil.getBean(PrimaryKeyGenerater.class).getMachineId()

大厂的id设计
全局数据库生成唯一id型:
京东商城订单号格式:157444499 全局数据库
苏宁易购订单号格式:2000839647 全局数据库
凡客诚品订单号格式:213052230059 业务编码+年的后2位+月+日+订单数
银泰网订单号格式:10030522161715 年的第三位数+业务编码+年的后1位+月+日+订单数
淘宝的订单号格式:126036803257340376 14位为序号+买家ID的倒数1-2位+买家ID的倒数3-4位
Twitter Snowflake 格式 :458607675730102138 14位时间戳+ 数据中心2+服务器2位 + 顺序号4位
可归类4种:
方案1: 利用全局数据库(rmdb or nosql) 提供自增的字段ID, 具体业务端可一次读取多条id 提高性能 -- id 短 , 性能一般,维护成本高, 可读性一般
方案2: 年月日+日级别一定位数的序号(如 00001, 序号维护同方案1) -- id 短 , 性能一般,,维护成本高, 可读性高
方案3:淘宝方案 4位序号+买家4位ID -- id 长, 性能一般,,维护成本高, 可读性高只需读取后6位基本可判断订单
方案4: Twitter Snowflake方案 -- id 长, 性能高,,维护成本底, 可读性差 , 可参考方案3 把后4位改为用户id后4位组合
爱库存对id的需求场景:
1. 订单ID (完整编号、短号)
2. 发货单ID (完整编号、短号)
3. 代购ID (会员编号) (亿级)
4. 商家ID (千万级)
5. 售后申请服务号 (亿级)
6. 支付流水号
7. 支付退款流水号
8. 业务上使用的合并支付单号
方案选取原则:
1: 12位左右ID 选择方案2
2: 短id 选择方案1
3: 考虑数据中心的概念 选择方案4 (当前新项目采用此方案 , 新会员, 商户商家)

统一ID服务的更多相关文章

  1. AMQ学习笔记 - 15. 实践方案:基于ActiveMQ的统一日志服务

    概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...

  2. 基于ActiveMQ的统一日志服务

    概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...

  3. 高性能高可用的分布式唯一ID服务——mooon-uniq-id

    目录 目录 1 1. 前言 1 2. 名词 1 3. 功能 1 4. 唯一性原理 2 5. 系统结构 2 5.1. mooon-uniq-agent 2 5.2. mooon-uniq-master ...

  4. 6. 抹平差异,统一类型转换服务ConversionService

    目录 ✍前言 版本约定 ✍正文 ConverterRegistry ConversionService ConfigurableConversionService GenericConversionS ...

  5. CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台

    CoSky 基于 Redis 的服务治理平台(服务注册/发现 & 配置中心) Consul + Sky = CoSky CoSky 是一个轻量级.低成本的服务注册.服务发现. 配置服务 SDK ...

  6. 2 weekend110的zookeeper的原理、特性、数据模型、节点、角色、顺序号、读写机制、保证、API接口、ACL、选举、 + 应用场景:统一命名服务、配置管理、集群管理、共享锁、队列管理

    在hadoop生态圈里,很多地方都需zookeeper. 启动的时候,都是普通的server,但在启动过程中,通过一个特定的选举机制,选出一个leader. 只运行在一台服务器上,适合测试环境:Zoo ...

  7. 【SpringCloud构建微服务系列】使用Spring Cloud Config统一管理服务配置

    一.为什么要统一管理微服务配置 对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件,但是在微服务架构中全部手动修改的话很麻烦而且不易维护 ...

  8. 使用plv8+ shortid npm包构建一个短唯一id服务

    plv8 是一个很强大的pg 扩展插件,我们可以直接额使用js 增强sql ,shortid 是一个用来生成短连接id 很方便的类库 因为shortid 是一个npm 模块,我们需要使用一种方法使用r ...

  9. 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...

随机推荐

  1. php字符串实例

    2.双引号字符串 <?php print "I have gone to the store."; print "The sauce cost \$10.25.&q ...

  2. unity3D中使用Socket进行数据通信(一)

    公司今年3D产品的工作中心主要集中在提高产品深度上,通过对竞争产品的分析,发现我们的缺陷在于多人在线与后台管理部分,多人在线使用unity自带的Network能够搞定,后台部分前段时间主要研究了下Sq ...

  3. 新安装的金蝶K3软件,初始化后,在基础资料中对于币别,科目,部门,客户等资料均无法新增,无法引出,等操作,K3CASysSet.dll

    新装K3,新建的帐套.导入科目点菜单或新增button均无反应,币别.客户等辅助核算项目也新增也无法保存. 在电脑上新安装的金蝶K3软件.初始化后.在基础资料中对于币别,科目,部门,客户等资料均无法新 ...

  4. RelativeLayout布局(仅在RelativeLayout中有效)

    在父亲布局的相对位置 android:layout_alignParentLeft="true"     //在布局左边 android:layout_alignParentRig ...

  5. IOS 网络解析

    网络解析同步异步 /*------------------------get同步-------------------------------------*/ - (IBAction)GET_TB:( ...

  6. Struts2学习七----------Struts2后缀

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2后缀 - Struts2默认后缀是action - Struts2使用默认后缀时*.action和*都是同一个请求 - Struts2自 ...

  7. 基于jenkins,tekton等工具打造kubernetes devops平台

    本贴为目录贴,将不断更新 目录 1.Docker在centos下安装以及常见错误解决 2.使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像) 3.无法访问gcr ...

  8. python爬虫获取百度图片(没有精华,只为娱乐)

    python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...

  9. FileInputStream 的读取操作

    package xinhuiji_day07; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFou ...

  10. Docker入门系列2 安装

    可以从 Docker 社区直接下载可用的模版或镜像. Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多. 其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Do ...