面试官其实想考察的是如何实现分布式趋势自增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/
相关推荐
-
面试xx资本(私募基金)Python高级工程师
面试的问题都比较常见,我没有准备好。下面的题目答案仅供参考。今天二面过了,给了offer。 面试体验一般,hr不够热情,相比大点的公司来讲,没有提前通知面试,面试官上来就直接问问题…
-
golang同目录调用其他文件函数的用法
问题复现 解决方法 这个应该是新手常见的问题,golang的包管理方式,这个运行错误是由于你执行了main.go,而没有编译其他go文件,当然不知道run函数哪里来的 正确方式 g…
-
前端学习记录之二:异步编程
ps:只是针对看的某个课程做的一个简短笔记,方便后续自身复习,有时候逻辑或者板书并不是那么清晰,知识面可能也不全。有合适的机会后面会根据自己看的书籍、资料等完善和补充完善细节。 概…
-
前端学习记录之一:函数式编程
本节回顾 1.函数式编程(核心思想:把运算过程抽象成函数) 2.函数相关复习(函数是一等公民,高级函数,闭包) 3.函数式编程基础(lodash,纯函数,柯里化,管道,函数组合) …
-
Leecode – 反转单链表
原题 输入[1,2,3,4,5] 输出[5,4,3,2,1] https://leetcode-cn.com/problems/reverse-linked-list/ 解答 思路…
-
安装gitlab runner 和配置.gitlab.yaml 实现自动化cicd
前面有讲到如何安装gitlab,它本身不仅仅可以实现代码仓库版本管理,当然可以做到cicd,简化手动部署到烦扰,实现自动化编译和部署 要做实现cicd,如果是虚拟机部署到话,当然离…
-
前端面试题整理(持续收集,后期补充答案)
HTTP协议相关 HTTP建立连接之tcp三次握手 HTTP断开连接之tcp四次挥手 缓存:强缓存与协商缓存 网络七层协议 浏览器输入一个网址,到页面展示这中间经历了什么? HTT…
-
构建自己的脚手架过程大致记录
脚手架就是在启动的时候询问一些简单的问题,并且通过用户回答的结果去渲染对应的模板文件。 工作流程: 1.根据命令行交互询问用户问题 2.根据用户回答的结果生成文件 脚手架的简单雏形…