昆仑弟子_面霸
07-17·后端开发·10年+
面试吊打面试官
面试官:分布式ID有哪些常用实现方案?我:UUID、数据库自增、号段模式、Redis自增,还有雪花面试官:UUID有什么优缺点?我:优点是简单,不依赖中心节点。缺点太长且无序面试官:数据库自增呢?我:存在单点问题。可以做多库多表,每个库设置不同的起始值和步长面试官:听着就麻烦。扩容怎么办?我:要重新规划步长,还可能出现冲突。所以一般会改成号段模式面试官:什么叫号段模式?我:服务一次从数据库申请一段ID。比如申请1到1000。之后在内存里递增,用完再申请下一段面试官:申请号段时数据库挂了怎么办?我:做双Buffer,当前号段没用完时,提前加载下一段面试官:说说雪花算法。我:一般是64位。最高位不用。后面是时间戳、机器ID和序列号。同一毫秒内靠序列号递增。不同机器靠机器ID区分。面试官:一毫秒内序列号用完了呢?我:等到下一毫秒再生成。也可以调整位数,牺牲时间范围,换更大的并发能力。面试官:机器ID怎么分配?我:可以写配置,也可以通过注册中心分配,也可以根据机器信息计算,不过要处理碰撞面试官:雪花存在时间回拨问题,怎么办?我:小幅回拨可以等待。较大回拨可以切换备用机器ID,或者记录上次时间戳,拒绝生成并报警
发布于 广东
4
2
3
未登录
友善发言
image-upload
评论
加载中