一、概述
流水号生成器(全局唯一 ID生成器)是服务化系统的基础设施,其在保障系统的正确运行和高可用方面发挥着重要作用。而关于流水号生成算法首屈一指的当属 Snowflake雪花算法,然而 Snowflake本身很难在现实项目中直接使用,因此实际应用时需要一种可落地的方案。
UidGenerator 由百度开发,是Java实现的, 基于 Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于 docker等虚拟化环境下实例自动重启、漂移等场景。
本文就在项目中来集成 UidGenerator这一工程来作为项目的全局唯一 ID生成器。
二、基础工程创建
只需创建一个 Multi-Moudule的 Maven项目即可,然后我们集成进两个 Module:
- uid-generator
- github.com/baidu/uid-generator
- uid-consumer:消费者
- 使用uid-generator产生全局唯一的流水号
uid-generator模块我就不多说了,源码拿过来即可,无需任何改动;而关于 uid-consumer模块,先在 pom.xml中添加相关依赖如下:
然后在 application.properties配置文件中添加一些配置(主要是 MySQL和 MyBatis配置)