分布式id的概述与实现

news2024/11/24 9:34:08

文章目录

  • 前言
  • 一、分布式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/*.xml
  type-aliases-package: com.model.pojos
  global-config:
    datacenter-id: 1
    workerId: 1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言顺序表

文章目录 前言线性表顺序表静态顺序表动态顺序表 接口实现 前言 我们先补一下上篇博客落下的知识点: 首先说一下斐波那契的时间复杂度和空间复杂度: long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }还是说一下size_t代表的类型是unsi…

C#,数值计算——伽马微分(Gammadev)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Gammadev : Normaldev { private double alph { get; set; } private double oalph { get; set; } private double bet { get; set; } private double a1 { g…

2023年第十届中文自修杯汉字小达人比赛安排、常见问题和试卷题型

好消息!面向上海市小学生的2023年第十届中文自修杯汉字小达人比赛开始了! 这个活动从2014年开始举办第一届,迄今已经举办了九届,活动的影响力越来越大,深受上海市的小学生们欢迎。而且,有一些外省市的学校…

软件测评报告需要提交什么材料?

软件测评报告 软件测评/软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。因为软件是由文档、数据以及程序组成的,所以软件测试的对象也就不仅仅是程序本身,而是包括软件形成过程的文档、数据以及…

Liunx系统下载安装Nginx下载安装

目录 版本介绍 Liunx下安装步骤 补充:Docker安装nginx 版本介绍 Nginx开源版 http://nginx.org/en/ 官方原始的Nginx版本 Nginx plus商业版 开箱即用,集成了大量功能 Open Resty https://openresty.org/cn/ OpenResty是一个基于Nginx与 Lua 的高性…

ModuleNotFoundError: No module named ‘transformers.modeling_bert‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【LeetCode题目详解】第九章 动态规划part17 647. 回文子串 ● 516.最长回文子序列(day57补)

本文章代码以c为例! 一、力扣第647题:回文子串 题目: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具…

html5学习笔记21-css简略学习

CSS https://www.runoob.com/css/css-tutorial.html CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言&a…

Ngnix封禁IP与ip段

Ngnix IP封禁以及实现自动封禁IP 小白教程,一看就会,一做就成。 1.创建文件(被封禁的ip写里面) 在ngnix的conf目录下创建一个blockip.conf文件,里面放需要封禁的IP与ip段,格式如下(deny是禁用…

C++ 将off格式文件转换成ply格式存储

文章目录 引言off格式文件ply格式文件C标准库实现off转ply 引言 三维模型是计算机图形学中的一个重要概念,它是由一系列三维坐标点构成的点云或多边形网格。 OFF格式是一种用于描述三维模型的文件格式,它可以描述点云和多边形网格等不同类型的三维模型。…

抖音小程序开发教学系列(5)- 抖音小程序数据交互

第五章:抖音小程序数据交互 5.1 抖音小程序的网络请求5.1.1 抖音小程序的网络请求方式和API介绍5.1.2 抖音小程序的数据请求示例和错误处理方法 5.2 抖音小程序的数据缓存和本地存储5.2.1 抖音小程序的数据缓存机制和使用方法5.2.2 抖音小程序的本地存储和数据持久化…

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容,提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧,现在已经是物联网设备最热门的协议了。 作为记录,也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…

HAlcon例子

气泡思想 * This example shows the use of the operator dyn_threshold for * the segmentation of the raised dots of braille chharacters. * The operator dyn_threshold is especially usefull if the * background is inhomogeneously illuminated. In this example, *…

开源日报 0830 | 免费计算机科学自学路径:系统化教育与全球支持

ossu/computer-science Stars: 141.9k License: MIT 这个开源项目是一个自学计算机科学的免费路径。它提供了一套完整的在线教育材料,旨在为那些希望获得全面、扎实基础和良好习惯的人们提供支持。该课程按照本科计算机专业要求设计,并且选取了来自哈佛…

抖音小游戏运营攻略:运营能力、用户获取和用户留存

抖音小游戏运营攻略:运营能力、用户获取和用户留存 前言一,运营能力1.1 录屏分享1.2 分享设置 二,用户获取2.1 新游冷启计划2.2 游戏中心推广素材2.3 搜索关键词2.4 搜索结果图2.5 游戏特征2.6 剪映视频模板 三,用户留存3.1 游戏加…

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个…

【玩玩Vue】使用elementui页面布局和控制页面的滚动

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、页面布局二、页面滚动1.禁用body的滑动2.禁用el-aside的滚动3.启动el-main的滚动 前言 一、页面布局 这里布局使用vueelementui&…

如何对安卓设备执行免Root设置?免Root后如何远程控制?

使用AirDroid个人版的远程控制功能时,对被控的安卓设备执行免Root设置是比较常用的一种方式(安卓7.0及以上系统的设备可以选择通过辅助权限(无障碍)控制安卓设备) 如何执行免Root设置? 前提条件 1&#…

每日一博 - Stack OveFlow Arch In Reality

文章目录 概述猜测 ?Truth 概述 Stack Overflow 是一个与程序相关的 IT 技术问答网站,其技术架构主要采用微软的技术栈,包括 C#、ASP.NET、SQL Server 等。此外,Stack Overflow 还使用了一些开源框架,例如 HAProxy、R…

SpringBoot-logback不同业务模块输出不同的日志文件

工作中有些业务模块日志输出比较频繁&#xff0c;影响其他业务模块问题排查&#xff0c;可以使用logback实现根据不同的业务输出到不同的日志文件 1、在resource下创建文件logback-spring.xml 2、在logback.xml中添加如下配置 <?xml version"1.0" encoding"…