当前位置: 首页 > news >正文

浅谈常见的分布式ID生成方案

一、UUID

UUID是通用唯一标识码的缩写,其目的是让分布式系统中的所有元素都有唯一的辨识信息,而不需要通过中央控制器来指定唯一标识。

优点:
(1)降低全局节点的压力,使得主键生成速度更快;
(2)生成的主键全局唯一;
(3)跨服务器合并数据方便。

缺点:
(1)UUID占用16个字符,空间占用较多;
(2)不是递增有序的数字,数据写入IO随机性很大,且索引效率下降。

二、数据库主键自增

MySQL数据库设置主键且主键自动增长。

优点:
(1)INT和BIGINT类型占用空间较小;
(2)主键自动增长,IO写入连续性好;
(3)数字类型查询速度优于字符串。

缺点:
(1)并发性能不高,受限于数据库性能;
(2)分库分表,需要改造,复杂;
(3)自增-数据和数据量泄露。

三、Redis自增ID

Redis计数器,原子性自增。

优点: 使用内存,并发性能好 。

缺点:
(1)数据丢失;
(2)自增-数据量泄露。

四、雪花算法

大名鼎鼎的雪花算法,分布式ID的经典解决方案。雪花算法生成的ID组成如下所示:
(1)符号位,占用1位。
(2)时间戳,占用41位,可以支持69年的时间跨度。
(3)机器ID,占用10位。
(4)序列号,占用12位。一毫秒可以生成4095个ID。
在这里插入图片描述

优点:
(1)不依赖外部组件;
(2)性能好。

缺点: 时钟回拨。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity获取SceneView尺寸
  • k8s中service对象
  • 【扩散模型(六)】IP-Adapter 是如何训练的?2 源码篇(IP-Adapter Plus)
  • 类图的关联关系
  • VUE-组件间通信(三)全局事件总线
  • CAD二次开发IFoxCAD框架系列(25)- 自动加载和初始化的使用
  • 【flask】python框架flask的hello world
  • YOLOv8改进 | 主干篇 | YOLOv8引入EfficientViT替换Backbone
  • 行为识别实战第二天——Yolov5+SlowFast+deepsort: Action Detection(PytorchVideo)
  • 【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度
  • 1.【R语言】R语言的下载和安装
  • css中 display block属性的用法
  • 找单身狗(c语言)
  • 【论文阅读】通过使用实体增强框架融合多种多模态线索来改进假新闻检测
  • Kotlin 泛型小知识: `<T>`, `<out T>`, `<in T>` 的区别
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • C学习-枚举(九)
  • IDEA常用插件整理
  • JavaScript实现分页效果
  • Java的Interrupt与线程中断
  • java正则表式的使用
  • laravel 用artisan创建自己的模板
  • Mac转Windows的拯救指南
  • Python_OOP
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue-cli3搭建项目
  • Wamp集成环境 添加PHP的新版本
  • 机器学习学习笔记一
  • 简单数学运算程序(不定期更新)
  • 爬虫模拟登陆 SegmentFault
  • 前嗅ForeSpider教程:创建模板
  • 延迟脚本的方式
  • Semaphore
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #AngularJS#$sce.trustAsResourceUrl
  • #define,static,const,三种常量的区别
  • #QT(串口助手-界面)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2.2w字)前端单元测试之Jest详解篇
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (待修改)PyG安装步骤
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (黑马C++)L06 重载与继承
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (转) ns2/nam与nam实现相关的文件
  • (转)人的集合论——移山之道
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 回调、接口回调、 委托
  • .net 获取url的方法
  • .Net 垃圾回收机制原理(二)
  • .NET 漏洞分析 | 某ERP系统存在SQL注入