程序员小天地

分布式id生成器设计分享

2021-06-24  本文已影响0人  小草莓子桑

分布式环境下,大家可能经常会遇到需要一个全局唯一的id的需求,常见的方案雪花算法(SnowFlake)大家应该也很熟悉了,今天来分享一个分布式id生成器的设计思路,代码因为公司原因,就不贴出来了

先来分析一下分布式id生成器的应用场景

1.数据库分表分库后的主键

2.服务调用链路追踪的traceId

再来说一下我们这次设计的背景

我们设计分布式id生成器的背景

基于这个背景,我们确立了本次设计的目标

分布式id技术选型

说一下分布式id的常用技术选型

UUID

UUID
标准格式说明:
优点
缺点:
使用场景

基于mysql、redis等存储的自增序列

mysql实现:
redis实现
优点
缺点
优化方案

基于zookeeper实现

实现思路一
实现思路二
优点
缺点

sonwflake

雪花算法.png
优点
缺点

我们最后采用了sonwflake雪花算法,在结合我们的业务背景做了一些改动,实现了一个分布式id服务,供团队内的业务使用,这里说一下关键的改动点吧

为了解决机器码本地配置文件存放的问题,我们引入了zk来维护整个分布式id服务各个节点的机器码

为了减少时钟回拨的影响,利用zk来实现了一个时间校验器

上一篇下一篇

猜你喜欢

热点阅读