前段时间正值开发ID生成中心,看到很多业界大神分享了自己公司的ID生成器的设计思路。现在分享一下自己的思路,供大家参考、吐槽。
业务需求及业内方案,在许多文章中都有介绍,我在这里就不多介绍了。现在直入主题,谈谈自己的设计思路。
基本介绍
1.MySQL记录注册的应用服务信息及生成的应用唯一标识authID。
2.高可用的Redis记录注册的IDKey(应用中ID的唯一标识,一个应用可以申请多个ID)并负责生成、分发ID区间(利用Redis中incr特性)。这里Redis必须保证高可用,至少为双机热备保证数据不丢失。当然这里的IDKey注册可以记录在MySQL中。
3.ID生成中心使用L1、L2缓存从Redis中获取到的ID区间,并实时同步。
4.下游服务可以直接通过Http/RPC,从ID生成中心获取ID。
5.下游服务也可以通过在项目中引入ID生成客户端依赖包来获取ID。因为目前我们并没有那么高频的需求,所以暂时没有开发。