最初场景:在无状态分布式系统中,数据库采用分库分表,因此无法依赖各个数据库进行统一的ID管理。
实现目标:简单高效。
技术要求:低,但有技巧。
1. 目的:在分布式或者负载均衡集群中,为了保证全局唯一ID,使用统一的全局ID控制策略,对同一空间进行唯一ID控制;
2. 使用场景:分布式系统的用户注册ID、消息ID等;
3. 设计思想:1)全局唯一ID控制策略,2)使用数据库微小表设计来产生ID,3)各节点应用不过在获取ID时采用区段批量获取、在本地缓存部分ID段,4)模块名无需配置,新的一个模块请求时,自动进行id初始化。
4. 约束:默认情况下,一个系统全局ID的数量应得到控制。
5. 实现中的考虑:获取批量ID时,需要保证事务;同时可以这样考虑,在当前事务中,直接update数据库的相应记录+1000,然后获取最后的值A,则本地可用的ID区间为[A-1000+1, A]