# 第09节:ID生成策略领域开发
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!
- 分支:210920_xfg_IdGenerator (opens new window)
- 描述:使用雪花算法、阿帕奇工具包 RandomStringUtils、日期拼接,三种方式生成ID,分别用在订单号、策略ID、活动号的生成上。
# 零、优秀作业
- ID生成策略领域开发 @一点江南 (opens new window)
- ID生成策略领域开发 @BerserkD (opens new window)
- ID生成领域 @Chin (opens new window)
- 策略模式实现ID生成策略领域开发 @Geroge Liu (opens new window)
- ID生成策略领域开发,包括雪花算法、日期拼接、随机数生成ID, @liuc (opens new window)
- ID生成策略使用策略模式 @Gourdpa (opens new window)
- 重点是活动状态变更,使用了状态模式,在抽象类中定义了七种状态 @素质男孩 (opens new window)
- 第7章~第9章,学习汇总 @CCAT (opens new window)
# 一、开发日志
- 【说明】从本章节开始,我们会陆续的引入一些基础内容的搭建,包括本章节关于ID的生成、以及后续章节需要引入分库分表、vo2dto方法、Redis等,这些会支撑我们继续开发业务领域中一些需要用到的订单号、活动号生成以及个人用户参与到的抽奖信息落库。
- 使用策略模式把三种生成ID的算法进行统一包装,由调用方决定使用哪种生成ID的策略。策略模式属于行为模式的一种,一个类的行为或算法可以在运行时进行更改
- 雪花算法本章节使用的是工具包 hutool 包装好的工具类,一般在实际使用雪花算法时需要做一些优化处理,比如支持时间回拨、支持手工插入、简短生成长度、提升生成速度等。
- 而日期拼接和随机数工具包生成方式,都需要自己保证唯一性,一般使用此方式生成的ID,都用在单表中,本身可以在数据库配置唯一ID。那为什么不用自增ID,因为自增ID通常容易被外界知晓你的运营数据,以及后续需要做数据迁移到分库分表中都会有些麻烦
# 二、支撑领域
在 domain 领域包下新增支撑领域,ID 的生成服务就放到这个领域下实现。
关于 ID 的生成因为有三种不同 ID 用于在不同的场景下;
- 订单号:唯一、大量、订单创建时使用、分库分表
- 活动号:唯一、少量、活动创建时使用、单库单表
- 策略号:唯一、少量、活动创建时使用、单库单表