分布式ID-数据库多主模式
如果我们两个数据库组成一个主从模式集群,正常情况下可以解决数据库可靠性问题,但是如果主库挂掉后,数据没有及时同步到从库,这个时候会出现ID重复的现象。我们可以使用双主模式集群,也就是两个Mysql实例都能单独的生产自增ID,这样能够提高效率,但是如果不经过其他改造的话,这两个Mysql实例很可能会生成同样的ID。需要单独给每个Mysql实例配置不同的起始值和自增步长。
第一台Mysql实例配置:
set @@auto_increment_offset = 1; -- 起始值
set @@auto_increment_increment = 2; -- 步长
第二台Mysql实例配置:
set @@auto_increment_offset = 2; -- 起始值
set @@auto_increment_increment = 2; -- 步长
经过上面的配置后,这两个Mysql实例生成的id序列如下:
mysql1,起始值为1,步长为2,ID生成的序列为:1,3,5,7,9,…
mysql2,起始值为2,步长为2,ID生成的序列为:2,4,6,8,10,…
对于这种生成分布式ID的方案,需要单独新增一个生成分布式ID应用,比如DistributIdService,该应用提供一个接口供业务应用获取ID,业务应用需要一个ID时,通过rpc的方式请求DistributIdService,DistributIdService随机去上面的两个Mysql实例中去获取ID。
实行这种方案后,就算其中某一台Mysql实例下线了,也不会影响DistributIdService,DistributIdService仍然可以利用另外一台Mysql来生成ID。
但是这种方案的扩展性不太好,如果两台Mysql实例不够用,需要新增Mysql实例来提高性能时,这时就会比较麻烦。
现在如果要新增一个实例mysql3,要怎么操作呢?
第一,mysql1、mysql2的步长肯定都要修改为3,而且只能是人工去修改,这是需要时间的。
第二,因为mysql1和mysql2是不停在自增的,对于mysql3的起始值我们可能要定得大一点,以给充分的时间去修改mysql1,mysql2的步长。
第三,在修改步长的时候很可能会出现重复ID,要解决这个问题,可能需要停机才行。
为了解决上面的问题,以及能够进一步提高DistributIdService的性能,如果使用第三种生成分布式ID机制。
分布式ID-数据库多主模式相关推荐
- 分布式ID(数据库多主模式,这些知识点你会吗
CREATE TABLE SEQID.SEQUENCE_ID ( id bigint(20) unsigned NOT NULL auto_increment, stub char(10) NOT N ...
- 最新高频Java面试题目分享,分布式ID(数据库多主模式
三.号段模式 我们可以使用号段的方式来获取自增ID,号段可以理解成批量获取,比如DistributIdService从数据库获取ID时,如果能批量获取多个ID并缓存在本地的话,那样将大大提供业务应用获 ...
- 一口气说出 9种 分布式ID生成方式,面试官有点懵了
写在前边 前两天公众号有个粉丝给我留言吐槽最近面试:"四哥,年前我在公司受点委屈一冲动就裸辞了,然后现在疫情严重两个多月还没找到工作,接了几个视频面试也都没下文.好多面试官问完一个问题,紧接 ...
- 分布式 ID的 9 种生成方式
一.为什么要用分布式 ID? 在说分布式 ID 的具体实现之前,我们来简单分析一下为什么用分布式 ID?分布式 ID 应该满足哪些特征? 1.什么是分布式 ID? 拿 MySQL 数据库举个栗子: 在 ...
- 九种分布式ID生成方式
一.为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征? 1.什么是分布式ID? 拿MySQL数据库举个栗子:在我们业务数据量不大的 ...
- 九种分布式ID生成算法详解
一.分布式ID简介 1.什么是分布式ID? 在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付. 但随着数据日渐增长,主从同步也扛不住了,就需 ...
- 分布式系统概念 | 分布式ID:数据库、号段模式、雪花算法(Snowflake)、Redis实现方案
文章目录 分布式ID 数据库 自增ID 多主模式 号段模式 雪花算法 Redis 总结 分布式ID ID是数据的唯一标识,传统的做法是使用数据库的自增ID,但是随着业务规模的不断发展,数据量将越来越大 ...
- 大型互联网公司分布式ID方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并 ...
- easyui treegrid获取父节点的id_超简单的分布式ID生成方案!美团开源框架介绍
目录 阐述背景 Leaf snowflake 模式介绍 Leaf segment 模式介绍 Leaf 改造支持 RPC 阐述背景 不吹嘘,不夸张,项目中用到 ID 生成的场景确实挺多.比如业务要做幂等 ...
- 超简单的分布式ID生成方案!美团开源框架介绍
目录 阐述背景 Leaf snowflake 模式介绍 Leaf segment 模式介绍 Leaf 改造支持 RPC 阐述背景 不吹嘘,不夸张,项目中用到 ID 生成的场景确实挺多.比如业务要做幂等 ...
最新文章
- 程序员期末试卷_第三部分复习提纲.doc下载
- COLING 2018 ⽤对抗增强的端到端模型⽣成合理且多样的故事结尾
- matlab参考答案2011至诚,职高数学试卷答卷答案详解
- 小米线刷包需要解压么_【连载】刷机教程之小米手机通用线刷教程
- 记录 之 numpy查看数据类型和类型转换
- 【数论】ZAP-Queries(P3455)
- java metric_java版的Metric工具介绍
- Hive的使用之脚本文件
- include做配置文件
- python中list的切片和range函数
- 对程序员来说最难的是写代码吗?
- 汇编笔记1:debug
- ffmpeg-20160629-git-bin.7z
- java linux socket编程_linux下socket编程实例?javasocket编程流程?java socket编程实例代码讲解...
- 扩展卡尔曼滤波算法 EKF
- 利用ASK/OOK 发射模块,实现信号重放
- 网络爬虫---从千图网爬取图片到本地
- 人工智能之路学习计划
- Mysql数据库使用规范
- R语言:优雅、卓越的统计分析及绘图环境