首页 > 其他分享 >分布式ID设计方案

分布式ID设计方案

时间:2024-11-27 22:33:54浏览次数:4  
标签:Leaf UUID 数据库 生成 设计方案 ID 分布式

分布式ID设计方案

package com.example.core.mydemo.thread;

import java.util.UUID;

public class IDTest {
    public static void main(String[] args) {
        String uuid = UUID.randomUUID().toString();
        //6c1d27a1-6a1c-458e-bc66-3cfb76999733
        //在分布式日志系统或者分布式链路跟踪系统中,可以使用UUID生成唯一标识,用于串联请求的日志。
        //缺点:UUID生成的字符串太长,通过索引查询数据的效率比较低。此外,UUID生成的字符串,顺序没有保证,不是递增的,不满足工作中的有些业务场景。
        System.out.println("uuid=" + uuid);

        /**
         * MySQL中的auto_increment。
         * Oracle中sequence。
         * 在一些老系统或者公司的内部管理系统中,可能会用数据库递增ID作为分布式ID的方案,这些系统的用户并发量一般比较小,数据量也不多。
         * 缺点:只能保证单表的数据唯一性,如果跨表或者跨数据库,ID可能会重复。ID是自增的,生成规则很容易被猜透,有安全风险。ID是基于数据库生成的,在高并发下,可能会有性能问题。
         */

        /**
         *  数据库号段模式
         *  一次生成一定步长的ID,比如:步长是1000,每次数据库自增1000,ID值从100001变成了101001
         *  这时需要重新从数据库中获取一次新号段的ID,缓存到服务器的内存中,这样下次又能直接从内存中获取ID了。
         *  缺点:ID是自增的,生成规则很容易被猜透,有安全风险。如果数据库是单节点的,有岩机的风险。
         */

        /**
         * 数据库的多主模式
         * 为了保证在不同的master实例下ID的唯一性,我们需要事先规定好每个master下的大的区间,比如:master1的数据是10开头的,master2的数据是11开头的,master3的数据是12开头的。
         * 缺点:跨多个master实例下生成的ID,可能不是递增的。
         */

        /**
         * Redis生成ID
         * SET ID_VALUE 1000
         * INCR ID_VALUE
         * GET ID_VALUE
         * DEL ID_VALUE  删除
         * 缺点:ID是自增的,生成规则很容易被猜透,有安全风险。并且Redis可能也存在单节点,岩机的风险。
         */

        /**
         * Zookeeper生成ID
         * Zookeeper主要通过其znode数据版本来生成序列号,可以生成32位和64位的数据版本号,客户端可以使用这个版本号来作为唯一的序列号。
         */

        /**
         * Snowflake(雪花算法)是Twitter开源的分布式ID算法。
         * 缺点:依赖服务器时间,服务器时钟回拨时可能会生成重复ID。
         */

        /**
         * Leaf是美团开源的分布式ID生成系统,它提供了两种生成ID的方式:
         * Leaf-segment号段模式
         * Leaf-snowflake雪花算法
         * https://github.com/Meituan-Dianping/Leaf
         */

        /**
         * Tinyid是滴滴用Java开发的一款分布式id生成系统,基于数据库号段算法实现。
         * https://github.com/didi/tinyid
         */

        /**
         * 百度 UID-Generator 使用 Java 语言,基于雪花算法实现。
         */
    }
}

 

标签:Leaf,UUID,数据库,生成,设计方案,ID,分布式
From: https://www.cnblogs.com/oktokeep/p/18573233

相关文章

  • Rokid新品发布后,传出拖欠工资风波
    近日,AR智能眼镜企业Rokid被推上了风口浪尖。据DoNews报道,在职场社交APP脉脉上,有员工爆料称公司存在拖欠工资的情况,这不禁让人对这家公司的经营状况产生了深深的忧虑。要知道,就在不久前的11月18日,Rokid还高调发布了其新一代AR眼镜RokidGlasses,试图在AR市场上再次发力。然......
  • Android四大组件的工作过程,原理解析
    一、Activity启动过程首先我们要知道Activity有冷启动和热启动之分,通俗来说冷启动就是应用进程尚未创建,热启动则已经创建完成。在点击桌面应用图标时,即将要启动的App将和Launcher、AMS、Zygote这三者多次通信,才会启动一个App,然后再启动Activity。追踪源码,我们可以得到以下......
  • Android按键点击事件三种实现方法
    1. 在xml文件中为Button添加android:onclick属性由于没有onclick这个函数,onclick下面会提示红色波浪线错误,然后单击一下"onclick"按住键盘上Alt+Enter键,选择在activity中生成函数publicvoidonclick(Viewview){Toast.makeText(this,"方法1点击按键",T......
  • 解决Android软键盘弹起,页面挤压的问题
    一、问题描述在移动端h5页面,当页面中包含input、textarea输入框的时候,或者有调起软键盘的操作时,Android浏览器下打开的页面,可视窗口的高度改变,导致页面上的vh重新计算,页面被压扁。ios下的浏览器(safari)没有这个问题。二、原因在ios中,软键盘是叠在可视窗口上面的,也就是不......
  • 科技惊艳:RFID技术引领被装物联网信息化革新
         被装物联网信息化监控系统是一项错综复杂却成效斐然的解决方案,它巧妙地将物联网技术的先进性与装设备资源管理的实际需求相融合,实现了对被装设备资源的即时追踪、智能化调控以及资源的最优化配置。以下是对被装物联网的深度剖析与高端解读:一、被装物联网信息化......
  • Android中使用PDFBox将文本写入到PDF文件中
    在Android中要写入文本,按照网上的使用showText,在showText之前使用moveTo方法无法写入到正确的位置,需要使用Matrix来确定准确的位置和大小下面的代码时将一个包含写入文本和位置的表单数组,将表单数组中的文本写入到PDF对应位置的方法//位置信息classPositionData{varsi......
  • springboot毕设基于Android的电动汽车电桩管理平台前 源码+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着电动汽车产业的迅猛发展,其市场保有量不断攀升。然而,与之配套的充电桩管理却面临诸多挑战。一方面,充电桩数量日益增多,分布广泛且分散,传统的管......
  • fastadmin更改上传附件数据库为附件ID
    1.后台返回值加入IDapplication/admin/controller/Ajax.php文件中upload()方法,2处返回值加上附件ID 这样上传文件后,返回值便会多出file_id字段 2.比如添加商品页面上传商品图,得到file_id;<divclass="form-group"><labelclass="control-labelcol-xs-12co......
  • c++QTableWidget横向填充满他的空间,且均匀分布
    1.概要//设置所有列均匀分布并填充满整个空间QHeaderView*header=tableWidget->horizontalHeader();for(inti=0;i<tableWidget->columnCount();++i){header->setSectionResizeMode(i,QHeaderView::Stretch);}2.内容在Qt中,如果你希望......
  • 一款分布式可扩展的工作流调度系统,大规模集群调度不在话下!
    DolphinScheduler是一款优秀的分布式工作流调度系统,尤其适合大规模数据处理和调度需求。无论是数据ETL、机器学习模型的训练,还是实时数据的处理,它都能提供强大的调度功能和高效的保障,满足复杂多样的业务需求。DolphinScheduler的核心特性1.易于部署DolphinSchedule......