2024年最新分布式数据库如何实现主键全局自增?(1),Java就业班视频

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  1. MySQL 只能做小项目?松哥要说几句公道话!

  2. 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下!

  3. What?Tomcat 竟然也算中间件?

  4. 分布式数据库中间件 MyCat 搞起来!

  5. 数据库分库分表,分片配置轻松入门!


问题

==

主键自增这应该算是一个非常常见的需求,在单机数据库中,这个需求一个 auto_increment 就能实现,但是在数据库集群中,这个需求却变复杂了,因为存在多个数据库实例 ,各自都是主键自增,合在一起就不是主键自增了。

最简单的思路

======

最简单的办法莫过于通过设置主键自增的步长和起始偏移量来处理这个问题。默认情况下,主键自增步长为 1 ,如果我们有三个数据库实例,我们可以将主键自增步长设置为 3 ,这样对于第一个数据库实例而言,主键自增就是 1、4、7、10…,对于第二个数据库实例而言,主键自增就是 2、5、8、11…,对于第三个数据库实例而言,主键自增就是 3、6、9、12…。

MSSQL 可以直接在 SQL 中指定主键的自增步长和起始偏移量,但是 MySQL 则需要修改数据库配置才能实现,因此这里不推荐使用这种方式。

MyCat 的办法

=========

MyCat 作为一个分布式数据库中间,屏蔽了数据库集群的操作,让我们操作数据库集群就像操作单机版数据库一样,对于主键自增,它有自己的方案:

  1. 通过本地文件实现

  2. 通过数据库实现

  3. 通过本地时间戳实现

  4. 通过分布式 ZK ID 生成器实现

  5. 通过 ZK 递增方式实现

今天我们就先来看看看如何通过 ZK 递增的方式实现主键全局自增。

配置步骤如下:

  • 首先修改主键自增方式为 4 ,4 表示使用 zookeeper 实现主键自增。

server.xml

640?wx_fmt=png

  • 配置表自增,并且设置主键

schema.xml

640?wx_fmt=png

设置主键自增,并且设置主键为 id 。

  • 配置 zookeeper 的信息

在 myid.properties 中配置 zookeeper 信息:

640?wx_fmt=png

  • 配置要自增的表

sequence_conf.properties

640?wx_fmt=png

注意,这里表名字要大写。

  1. TABLE.MINID 某线程当前区间内最小值

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记

我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值