面试官其实想考察的是如何实现分布式趋势自增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后端开发面试-线程、进程、协程
简介 理解并发和并行 并行对应的是多进程 并发对应的是协程、线程(异步编程) 协程 协程之在python2中的yield使用 在python2中由于没有原生的协程,只有基于生成器的…
-
重学Python基础篇(一)之认识python
前言 在我刚毕业的时候Python语言就非常火了,随之而来的就是招人单位,python岗位的激增,但同时增加的还有培训单位,这也造成了市场的饱和。就我个人而已,python web…
-
前端学习记录之二:异步编程
ps:只是针对看的某个课程做的一个简短笔记,方便后续自身复习,有时候逻辑或者板书并不是那么清晰,知识面可能也不全。有合适的机会后面会根据自己看的书籍、资料等完善和补充完善细节。 概…
-
go协程中,main中无法捕获子协程的panic
在go中,虽然协程很好用,但是需要注意捕获他的异常,不如在生产环境中,子协程panic了,你的整个服务都会挂掉 错误示例 正确用法
-
Python通过mac地址唤醒电脑
需求 家中nas需要定时唤醒 远程在外唤醒家中的电脑 直接上代码 说明 mac地址可以在自己的路由器中获取 网络唤醒,需要被唤醒的机器主板支持网络唤醒,记得在bios设置 通过外网…
-
记录一次go mod vendor 没有同步所有的package
注意 :go mod vendor 只同步被代码使用过或者引用过的package,如果你发下go mod tidy明明将包都下载下来了,但是vendor文件夹少了几个package…
-
python后端开发面试-语言基础篇
Python是动态语言还是静态?强类型还是弱类型? python 是动态语言,怎么区分呢?关键看类型检测是在运行时检查还是编译时检查,Python是运行时检查,所以是动态语言,像j…
-
面试记录之一二三的练习题
一、简答题 1.谈谈你是如何理解JS异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务? 二、代码题 ———…
-
kubeadm安装单节点master
环境 centos7.6 三台虚拟机,一个master,2个node 192.168.0.11 master 192.168.0.12 node 192.168.0.13 node…