分布式序列
一、背景 在复杂分布式系统中,特别是微服构架中,往往需要对大量的数据和消息进行唯一标识。随着系统的复杂,数据的增多,分库分表成为了常见的方案,对数据分库分表后需要有一个唯一ID来标识一条数据或消息(如订单号、交易流水、事件编号等),此时一个能够生成全局唯一ID的系统是非常必要的。 业务对分布式ID规则有哪些要求?对分布式ID系统有什么要求?分布式ID算法有哪些?业内大厂是怎么用的?我们又是怎么玩的?接下来一 一揭晓。 二、分布式序列要求 分布式序列是一个通用的产品,要满足以要求: 1、全局唯一性 在同一场景下不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 2、趋势递增 在主键的选择上面我们应该尽量使用有序的主键保证写入性能、同时有利于索引提高查询的性能。 3、序列数据类型 序列的数据类型决定的存储空间大小,序列尽可能用整类型,以MYSQL bigint unsigned为例存储空间为8字节,范围(0~2*2^63-1 )是一个极大的整数,足以满足需求。 4、简单易用 能够拿来即用,接入方便,同时在系统设计和实现上要尽可能的简单。 三、序列常用算法 3.1、UUID UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准。 UUID是由一组32位数的16进制数字所构成,UUID理论上的总数为1632=2128