当前位置: 首页 > news >正文

统一ID服务

代码已经修改 调用方式 为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日上线
旧版会员蔡建zuulakucun-base-data-new11月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 ( 当前新项目采用此方案 , 新会员, 商户商家)

 

转载于:https://www.cnblogs.com/wzk-0000/p/11079471.html

相关文章:

  • 小小c#算法题 - 5 - 插入排序
  • 线程启动 [转]
  • PSP Skype 使用国内卡
  • php.ini 中文版[转]
  • 使用StyleCop进行代码审查
  • wcf服务代理层添加wcf服务异步代理
  • 检测是否支持position:fixed
  • [译]学习IPython进行交互式计算和数据可视化(三)
  • 【PSY】 [歌詞] 父親
  • 一步一步学Remoting之三:复杂对象
  • linux下查看磁盘空间
  • Greenplum table 之 appendonly的列存储表
  • 云计算实验(二)Hadoop 练习
  • 云计算实验(三)CloudSim练习
  • 信息安全实验一:DES分组密码算法 2019.03.21
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Date型的使用
  • DOM的那些事
  • Median of Two Sorted Arrays
  • Netty 4.1 源代码学习:线程模型
  • Vue 2.3、2.4 知识点小结
  • 检测对象或数组
  • 浅谈web中前端模板引擎的使用
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 手机端车牌号码键盘的vue组件
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 【干货分享】dos命令大全
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​渐进式Web应用PWA的未来
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (8)STL算法之替换
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分布式缓存)Redis哨兵
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (区间dp) (经典例题) 石子合并
  • (十六)Flask之蓝图
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net的C#语言取月份数值对应的MonthName值
  • @Autowired标签与 @Resource标签 的区别
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Codeforces] combinatorics (R1600) Part.2
  • [FT]chatglm2微调
  • [hdu 4552] 怪盗基德的挑战书
  • [java基础揉碎]关系运算符(比较运算符)逻辑运算符赋值运算符三元运算符运算符的优先级
  • [kubernetes]控制平面ETCD
  • [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例
  • [na]wireshark抓包排错-tcp.flags.reset
  • [NHibernate]条件查询Criteria Query
  • [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
  • [RK-Linux] RK3399支持M.2 NVMe SSD启动
  • [Unity3D]--更换天空盒子