分布式ID-数据库自增ID

分布式ID-数据库自增ID第一种方案仍然还是基于数据库的自增 ID 需要单独使用一个数据库实例 在这个实例中新建一个单独的表 表结构如下 CREATEDATABA SEQID CREATETABLES SEQUENCE ID idbigint 20 unsignedNOTN increment stubchar 10 NOTNULLdefau PRIMARYKEY id UNIQUEKEYstu stub ENGINE

第一种方案仍然还是基于数据库的自增ID,需要单独使用一个数据库实例,在这个实例中新建一个单独的表:

表结构如下:

CREATE DATABASE `SEQID`; CREATE TABLE SEQID.SEQUENCE_ID ( id bigint(20) unsigned NOT NULL auto_increment, stub char(10) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY stub (stub) ) ENGINE=MyISAM; 

可以使用下面的语句生成并获取到一个自增ID

begin; replace into SEQUENCE_ID (stub) VALUES ('anyword'); select last_insert_id(); commit; 

stub字段在这里并没有什么特殊的意义,只是为了方便的去插入数据,只有能插入数据才能产生自增id。而对于插入我们用的是replace,replace会先看是否存在stub指定值一样的数据,如果存在则先delete再insert,如果不存在则直接insert。

这种生成分布式ID的机制,需要一个单独的Mysql实例,虽然可行,但是基于性能与可靠性来考虑的话都不够,业务系统每次需要一个ID时,都需要请求数据库获取,性能低,并且如果此数据库实例下线了,那么将影响所有的业务系统。

为了解决数据库可靠性问题,我们可以使用第二种分布式ID生成方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232498.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux版本Java卸载

    Linux版本Java卸载Linux版本Java卸载1.VM中查找java列表rpm-qa|grepjava2.卸载javayumremoveopenjdk报错3.输入命令rpm-erpm-qa|grepjava卸载jdk包4.输入命令rpm-erpm-qa|grepjava–nodeps强制卸载jdk包查询rpm-qa|grepjava,看看还有没有java…

    2022年5月19日
    36
  • js 比java还难_javascript与java哪个难「建议收藏」

    js 比java还难_javascript与java哪个难「建议收藏」javascript与java哪个难?答案是:JavaScript比Java更难。那么这是为什么?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。原因:JavaScript有太多东西需要你自己去理解,这些东西里有很多要么Java已经给你做成范式了,你可以通过学习范式来理解;要么就是根本没有,无需理解。JavaScript需要在语言的基础上再整理一套方法论,这个过程会有不同流派。而Java基本上…

    2022年7月8日
    22
  • vhdl与verilog hdl的区别_HDL语言

    vhdl与verilog hdl的区别_HDL语言HDL特别是VerilogHDL得到在第一线工作的设计工程师的特别青睐,不仅因为HDL与C语言很相似,学习和掌握它并不困难,更重要的是它在复杂的SOC的设计上所显示的非凡性能和可扩展能力。 在学习HDL语言时,笔者认为先学习VerilogHDL比较好:一是容易入门;二是接受VerilogHDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。小析VHDL与Veril

    2022年9月21日
    6
  • MySQL数据库管理工具_Mysql数据库

    MySQL数据库管理工具_Mysql数据库官方社区版免费工具MySQLWorkbenchMySql官方社区版下载:MySQLCommunityDownloadsMySQLYumRepository MySQLAPTRepository MySQLSUSERepository MySQLCommunityServer MySQLCluster MySQLRouter MySQLShell MySQLWorkbench MySQLInstallerforWind…

    2022年8月22日
    6
  • openssl生成证书linux,Linux下使用openssl生成证书「建议收藏」

    openssl生成证书linux,Linux下使用openssl生成证书「建议收藏」利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.证书文件的生成步骤:一、服务器端1.生成服务器端的私钥(key文件);opensslgenrsa-des3-outserver.key1024运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法…

    2026年1月22日
    4
  • Java数组超详解

    Java数组超详解一、前言前面我们学习了随机数的介绍和使用,那么这篇我们来学习java中数组的定义和使用,java的数组和c语言的十分类似。二、数组的定义数组定义的形式:格式1:数据类型[]数组名;如int[]arr;说明:定义了一个int类型的数组,数组名是arr格式2:数据类型数组名[];如intarr[];说明:定义了一个int类型的数组名是arr的数组…

    2022年7月14日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号