分布式系统唯一ID生成方案汇总 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。 1. 数据库自增长序列或字段 最常见的方式。利用数 ...
分类:
其他好文 时间:
2020-11-17 11:48:42
阅读次数:
4
shortid 网址:https://www.npmjs.com/package/shortid 简短的非顺序url友好型唯一ID生成器。 ShortId 库创建的短的非顺序的url唯一ID。 非常适合网址缩短器,MongoDB和Redis ID,以及其他用户可能会看到的ID。 使用这个的好处参考: ...
分类:
其他好文 时间:
2020-10-20 16:42:16
阅读次数:
65
在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全 ...
分类:
编程语言 时间:
2020-09-04 17:22:10
阅读次数:
59
先抄个雪花ID介绍,雪花算法: (提高聚集索引的性能) 雪花ID是用一个64位的整形数字来做ID,对应.net中的long,数据库中的bigint,雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等。 自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景。GUI ...
分类:
Web程序 时间:
2020-08-31 13:22:30
阅读次数:
56
背景 项目中有一个订单模块,需要生成唯一的订单号,因为项目的并发要求不高,所以可以采用如下方法来生成唯一的id。 解决方法 使用时间戳加上一个随机数来生成唯一的Id。代码如下: public class KeyUtil { //生成唯一的主键 //格式为:时间+随机数 public static s ...
分类:
其他好文 时间:
2020-08-28 11:45:05
阅读次数:
43
两个回调方法:发送消息成功之后执行事务的executeLocalTransaction,回查时候调用的checkLocalTransaction。 思路:执行事务的时候,调用service的方法,这个方法需要用事务注解,方法参数中传入唯一id,事务方法最后判断如果id不为空,往事务表中插入唯一id, ...
分类:
其他好文 时间:
2020-08-04 16:41:25
阅读次数:
99
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 而twitter的snowflake解决了这种需 ...
分类:
编程语言 时间:
2020-07-28 17:25:11
阅读次数:
88
public class CIConfig { //唯一id public int id; //条件类型 public ConditionType conditionType; //条件参数 public String param; public CIConfig(int id, Condition ...
分类:
编程语言 时间:
2020-07-24 21:12:33
阅读次数:
73
分布式 ID 在庞大复杂的分布式系统中,通常需要对海量数据进行唯一标识,随着数据日渐增长,对数据分库分表以后需要有一个唯一 ID 来标识一条数据,而数据库的自增 ID 显然不能满足需求,此时就需要有一个能够生成全局唯一 ID 的系统,需要满足以下条件: 全局唯一性:最基本的要求就是不能出现重复的 I ...
分类:
其他好文 时间:
2020-07-22 20:53:59
阅读次数:
77
go-snowflake 在单机系统中我们会使用自增id作为数据的唯一id,自增id在数据库中有利于排序和索引,但是在分布式系统中如果还是利用数据库的自增id会引起冲突,自增id非常容易被爬虫爬取数据。在分布式系统中有使用uuid作为数据唯一id的,但是uuid是一串随机字符串,所以它无法被排序。 ...
分类:
其他好文 时间:
2020-07-11 11:17:30
阅读次数:
138