面试官其实想考察的是如何实现分布式趋势自增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/

相关推荐
-
python后端开发面试-装饰器
装饰器在python中是经常用到的,装饰器顾名思义是装饰的作用,其实就是一个函数把另外一个函数当作参数而已 函数装饰器 无参数装饰器 需要注意的是 @cost_time # 装饰没…
-
grpc请求超时处理
错误描述 grpc默认超时时间是1s,有些框架是500ms,当超时了会报如下错误: 客户端 client连接 controller 服务端增加超时 controller
-
golang sync.waitgroup的一个错误用法
close位置问题 错误用法 正确用法 close()得在wait前面 控制每秒并发多个 添加 time.Sleep(time.Second)
-
docker教程系列之docker怎么构建镜像
在前面一章我们讲到了如何使用docker,这一章将会讲到如何把我们的项目打包成docker镜像,这种需求在我们的工作中很非常常见的,下面将会分别讲到dockerfile文件构成,后…
-
python后端开发面试-redis缓存
默认16个数据库 五中数据结构 string list(列表) set(集合) zset(有序列表) hash(字典) 理解穿透、击穿、雪崩及其处理方法 redis怎样实现分布式锁…
-
python后端开发面试-语言基础篇
Python是动态语言还是静态?强类型还是弱类型? python 是动态语言,怎么区分呢?关键看类型检测是在运行时检查还是编译时检查,Python是运行时检查,所以是动态语言,像j…
-
记录一次引用其他微服务的proto文件,修改了message 中的字段的问题
背景 有2个微服务A和B,在A微服务中引用了B的proto,也就是请求A服务,A服务调用B服务的内容,并且修改了其中一个message中的字段,修改的proto文件message的…
-
前端面试题整理(持续收集,后期补充答案)
HTTP协议相关 HTTP建立连接之tcp三次握手 HTTP断开连接之tcp四次挥手 缓存:强缓存与协商缓存 网络七层协议 浏览器输入一个网址,到页面展示这中间经历了什么? HTT…
-
记录一次go mod vendor 没有同步所有的package
注意 :go mod vendor 只同步被代码使用过或者引用过的package,如果你发下go mod tidy明明将包都下载下来了,但是vendor文件夹少了几个package…
-
python后端开发面试-线程、进程、协程
简介 理解并发和并行 并行对应的是多进程 并发对应的是协程、线程(异步编程) 协程 协程之在python2中的yield使用 在python2中由于没有原生的协程,只有基于生成器的…