分布式id的概述与实现

文章目录

  • 前言
  • 一、分布式id技术选型
  • 二、雪花算法
  • 三、在项目中集成雪花算法


前言

随着业务的增长,数据表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术。将一个数据库进行拆分,通过数据库中间件连接。如果数据库中该表选用ID自增策略,则可能产生重复的ID,此时应该使用分布式ID生成策略来生成ID。


提示:以下是本篇文章正文内容

一、分布式id技术选型

  • redis,优势是(INCR)生成一个全局连续递增的数字类型主键,劣势是增加了一个外部组件的依赖,redis不可用,则整个数据库将无法插入
  • UUID,优势是全局唯一,mysql也有UUID实现,劣势是36个字符组成,占用空间大
  • snowflake(雪花)算法,优势是全局唯一,数字类型,存储成本低,机器规模大于1024台无法支持。

二、雪花算法

  • snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。
    在这里插入图片描述

三、在项目中集成雪花算法

mybatis-plus已经集成了雪花算法,完成以下两步即可在项目中集成雪花算法:

  • 在实体类中的id上加入如下配置,指定类型为id_worker
@TableId(value = "id",type = IdType.ID_WORKER)
private Long id;
  • 在application.yml文件中配置数据中心id和机器id
mybatis-plus:mapper-locations: classpath*:mapper/*.xmltype-aliases-package: com.model.pojosglobal-config:datacenter-id: 1workerId: 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/112589.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT-day1

实现华清远见登陆界面 #include "mywnd.h" #include <iostream> #include <QDebug> #include <QPushButton> #include <QLineEdit> #include <QLabel>MyWnd::MyWnd(QWidget *parent): QWidget(parent) {//设置固定窗口大小长400&…

大数据-玩转数据-oracel字符串分割转化为多列

一、建表 create table split_string_test(id integer primary key,test_string varchar2(500) );二、插入测试数据 insert into split_string_test values(1, 10,11,12,13,14,22); insert into split_string_test values(2, 22,23,24); insert into split_string_test valu…

Discuz论坛网站首页窄屏自定义宽度修改教程

discuz论坛管理中心默认有窄屏和宽屏的选择&#xff0c;窄屏默认是960px宽度&#xff0c;很多论坛为了页面美观&#xff0c;基本都是1200px的宽度&#xff0c;如何修改DZ论坛首页窄屏宽度大小的呢&#xff1f;今天飞飞和你们分享。 1、在网站根目录中依次打开文件 /template/de…

功能定义-变道碰撞预警

功能概述 变道碰撞预警(Lane Change Warning)功能包括两个子功能&#xff1a; ——盲区监测(Blind Spot Detection)&#xff0c;其功能表现为实时监测驾驶员视野盲区&#xff0c;并在其盲区内出现其他道路使用者时发出提示或警示信息 ——接近车辆报警(Closing Vehicle Warnin…

GitHub平台 Bookget操作

以bookget为例&#xff0c;熟悉github平台。 https://github.com/deweizhu/bookget 选择该界面中的“Wiki”&#xff0c;右侧边栏中是文章的结构大纲。 下载bookget软件。 依照说明&#xff0c;安装bookget环境。

Docker 网络学习

docker的网络模式 当你开始大规模使用Docker时&#xff0c;你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器技术&#xff0c;有很多令人称道的功能&#xff0c;如Docker的镜像管理。然而&#xff0c;Docker同样有着很多不完善的地方&#xff0c;网络方面…

科技抗老新突破,香港美容仪品牌内地重磅上市

近年来&#xff0c;新消费时代“颜值经济”的火热促使美容行业市场规模增长迅速&#xff0c;越来越多的人愿意为“美”买单&#xff0c;对美的需求也随之增长&#xff0c;美容行业已经成为成长最快的新锐产业。随着经济和科技的发展&#xff0c;“快捷”也成为了当今社会的时代…

企业架构LNMP学习笔记53

PHP扩展安装&#xff1a; server01和server03上安装redis扩展&#xff1a; 解压编译安装&#xff1a; shell > tar xvf redis-4.3.0.tgz shell > cd redis-4.3.0 shell > phpize shell > ./configure && make && make install 配置文件php.ini&…

深入理解函数模板

函数模板深入理解 编译器从函数模板通过具体类型产生不同的函数 编译器会队函数模板进行两次编译 对模板代码本身进行编译对参数替换后的代码进行编译 注意事项 函数模板本身不允许隐式类型转换 自动类型推导时&#xff0c;必须严格匹配显示类型指定时&#xff0c;能够进行…

VUE3写后台管理(3)

VUE3写后台管理&#xff08;3&#xff09; 1.环境1.node2.vite3.Element-plus4.vue-router5.element icon6.less7.vuex8.vue-demi9.mockjs10.axios11.echarts 2.首页1.布局Main2.头部导航栏CommonHeader3.左侧菜单栏CommonLeft4.首页Home1.从后端获取数据显示到前端table的三种…

机器学习入门与实践:从原理到代码

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在本文中&#xff0c;我…

微信小程序隐私授权

微信开发者平台新公告&#xff1a;2023年9月15之后&#xff0c;隐私协议将被启用&#xff0c;所以以后的小程序都要加上隐私协议的内容提示用户&#xff0c; 首先设置好隐私协议的内容&#xff0c;登录小程序的开发者后台&#xff0c;在设置--》服务内容声明--》用户隐私保护指…