面试官其实想考察的是如何实现分布式趋势自增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以上的文件删除,不然命令都执行不了 删除一…
-
构建自己的脚手架过程大致记录
脚手架就是在启动的时候询问一些简单的问题,并且通过用户回答的结果去渲染对应的模板文件。 工作流程: 1.根据命令行交互询问用户问题 2.根据用户回答的结果生成文件 脚手架的简单雏形…
-
前端面试题整理(持续收集,后期补充答案)
HTTP协议相关 HTTP建立连接之tcp三次握手 HTTP断开连接之tcp四次挥手 缓存:强缓存与协商缓存 网络七层协议 浏览器输入一个网址,到页面展示这中间经历了什么? HTT…
-
面试记录之一二三的练习题
一、简答题 1.谈谈你是如何理解JS异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务? 二、代码题 ———…
-
安装gitlab runner 和配置.gitlab.yaml 实现自动化cicd
前面有讲到如何安装gitlab,它本身不仅仅可以实现代码仓库版本管理,当然可以做到cicd,简化手动部署到烦扰,实现自动化编译和部署 要做实现cicd,如果是虚拟机部署到话,当然离…
-
Python通过mac地址唤醒电脑
需求 家中nas需要定时唤醒 远程在外唤醒家中的电脑 直接上代码 说明 mac地址可以在自己的路由器中获取 网络唤醒,需要被唤醒的机器主板支持网络唤醒,记得在bios设置 通过外网…
-
Docker安装Jenkins
简介 在开发过程中,devops搭建,ci集成工具选择Jenkins是不二之选 安装 安装docker centos7 创建jenkins目录 运行docker 如果用做cicd,…
-
go微服务一个错误:rpc error: code = Unimplemented desc = unknown service xxx
前言:当你的微服务需要连接其他的人的微服务,他会给你提供一个proto文件,当你调用他们的方法的时候,一直报错误:,一开始以为是服务地址写错了。后面查了一下,是go 语言中,pro…