关于全局唯一ID生成方法

唯一ID生成的主要目的是:为一个分布式系统的数据object产生一个唯一的标识。

一般对于唯一ID生成的要求主要这么几点:

  • 毫秒级的快速响应

  • 可用性强

  • prefix有连续性方便DB顺序存储

  • 体积小,8字节为佳

目前看到过的唯一ID生成方法主要有以下几种:

四种方案各有优劣,下面简要描述以下:

UUID:

优:java自带,好用。

劣:占用空间大

 

Snowflake: timestamp + work number + seq number

优:可用性强,速度快

劣:需要引入zookeeper 和独立的snowflake专用服务器

 

Flikr:基于int/bigint的自增

优:开发成本低

劣:如果需要高性能,需要专门一套MySQL集群只用于生成自增ID。可用性也不强

 

Instagram:41b ts + 13b shard id + 10b increment seq

优: 开发成本低

劣: 基于postgreSQL的存储过程,较为偏门

转自:http://www.cnblogs.com/cenalulu/p/3628141.html