互联网架构

 

高并发下如何生成唯一订单号?

 

分布式/集群环境ID生成要求

  1. 全局唯一
  2. 高并发支持
  3. 高可用
  4. 趋势递增
  5. 信息安全
  6. 可读性

ID 生成策略

1、UUID

  1. 通用唯一识别码
  2. 组成: 当前日期 + 时间 + 时钟序列 + 机器识别码(MAC地址或其他)
  3. 在分布式系统中,所有元素都不需要通过中央控制端来 判断数据的唯一性

2、数据库自增

  • 关系型数据库都实现数据库自增ID;Mysql通过AUTO_INCREMENT实现、Oracle通过Sequence序列实现。
  • 在数据集群环境下,不同数据库节点可设置不同起步值、相同步长来实现集群下生成全局唯一、递增ID
  • SET GLOBAL auto_increment_increment = 3
  • SET GLOBAL auto_increment_offset = 1;

 

高并发下如何生成唯一订单号?

 

3、Snowflake

  • 41位时间戳+10位机器ID +12位***(自增),转换为长度为18的长整型
  • Twitter为满足每秒上万条消息的创建,每条消息都必须分配全局唯一ID,这些ID需要趋势递增,方便客户端排序。

 

高并发下如何生成唯一订单号?

 

4、Redis

  • Redis 实现自增ID
  • Redis实现了incr(key) API用于将key 的值递增1,并返回结果,如果key不存在,则创建并赋值为0,然后再执行incr操作。

几种策略总结

 

高并发下如何生成唯一订单号?

相关文章: