面试官其实想考察的是如何实现分布式趋势自增ID。在mysql中如果给字段增加auto_increment属性,但是出现分库分表分布式的场景,那么单表的自增id并不少全局自增。
ID自增服务
独立出一个服务,专门为其他分布式服务提供自增id。其底层还是使用mysql的auto_increment,在性能上瓶颈还是在数据库中
分布式mysql数据库
多个mysql实例同一个id自增,设置相同的步长+不同的偏移量
比如mysql1,偏移量为1,步长为3,那么它的自增id为:1,4,7,10…
mysql2,偏移量为2,步长为3,自增id为2,5,8,11…
mysql3,偏移量为3,步长为3,自增id顺序为3,6,9,12…
redis/zookeeper自增实现
可以使用redis incr自增的方式获取全局自增
雪花算法/美团(Leaf)/百度(uid-generator)/滴滴(Tinyid)号段模式
这里不一一介绍了,有兴趣的可以去查看具体实现
原创文章,作者:站长,如若转载,请注明出处:https://wsppx.cn/1262/%e7%bd%91%e7%bb%9c%e5%bc%80%e5%8f%91/

相关推荐
-
n1docker存储空间不足
复现 查看存储情况 overlay use 100% 查看docker 存储空间 先删除一些镜像 如果删除镜像都报错,那就随便找一个10m以上的文件删除,不然命令都执行不了 删除一…
-
前端面试题:Http code 301和 302区别
总结:301是永久跳转并且有缓存,而302是临时跳转,没有缓存。 使用场景:当迁移域名当时候,网站域名是永久性转移,这时可以用301; 而当只是在服务器内部跳转,比如访问服务器a….
-
前端学习记录之一:函数式编程
本节回顾 1.函数式编程(核心思想:把运算过程抽象成函数) 2.函数相关复习(函数是一等公民,高级函数,闭包) 3.函数式编程基础(lodash,纯函数,柯里化,管道,函数组合) …
-
k8s基本安装(一)
前言 win10 vm16 5台2c/2g/50G centos虚拟机 设计架构 网络设置 vm NAT网络设置 网段:10.4.7.0 网关:10.4.7.254 网络适配器设置…
-
go微服务一个错误:rpc error: code = Unimplemented desc = unknown service xxx
前言:当你的微服务需要连接其他的人的微服务,他会给你提供一个proto文件,当你调用他们的方法的时候,一直报错误:,一开始以为是服务地址写错了。后面查了一下,是go 语言中,pro…
-
python后端开发面试-redis缓存
默认16个数据库 五中数据结构 string list(列表) set(集合) zset(有序列表) hash(字典) 理解穿透、击穿、雪崩及其处理方法 redis怎样实现分布式锁…
-
前端面试题—平安前端面试题
1.mixin混入,以后自身生命周期和混入周期的具体实现,mixin的具体实现 定义:分发vue中可复用的功能,本质是一个js对象,它可以包含我们组件中任意功能选项,如data、c…
-
go协程中,main中无法捕获子协程的panic
在go中,虽然协程很好用,但是需要注意捕获他的异常,不如在生产环境中,子协程panic了,你的整个服务都会挂掉 错误示例 正确用法
-
golang基础面试题
自己除了找python相关的岗位,还想找一下go的岗位,有转语言的倾向。但我自由半年的项目经验。 谈谈对defer的认识 defer用于资源的释放,会在函数返回之前进行调用,它会经…