Git 项目推荐 | 分布式系统唯一 ID 生成方法

在工程中引用sequence项目的sequence-client jar包 在的应用数据库中创建两个sequence表,sql语句如下:


CREATE TABLE `sequence0` (
    `value` bigint(20) NOT NULL,
    `name` varchar(50) NOT NULL,
    `gmt_create` datetime NOT NULL,
    PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `sequence1` (
    `value` bigint(20) NOT NULL,
    `name` varchar(50) NOT NULL,
    `gmt_create` datetime NOT NULL,
    PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在spring xml中配置如下,为了防止单点故障,你可以配置两个数据库源:

<bean id="bizOrderIdSequence" class="com.oschina.sequence"
               init-method="init" destroy-method="destroy">
    <property name="idName" value="bizOrderId"/>
    <property name="appName" value="trade"/>
    <property name="databaseConfigs">
        <list>
            <bean class="com.oschina.sequence.DatabaseConfig">
                <property name="host" value="10.10.23.46:3306"/>
                <property name="userName" value="root"/>
                <property name="password" value="123456"/>
                <property name="databaseName" value="trade"/>
            </bean>
            <bean class="com.oschina.sequence.DatabaseConfig">
                <property name="host" value="10.10.23.47:3306"/>
                <property name="userName" value="root"/>
                <property name="password" value="123456"/>
                <property name="databaseName" value="trade"/>
            </bean>
        </list>
    </property>
</bean>

在你的应用程序中,则可以如下使用,需要多个不同的ID你需要配置不同的bizOrderIdSequence: Long bizOrderId = bizOrderIdSequence.nextValue();

原文发布于微信公众号 - 码云Gitee(mayunOSC)

原文发表时间:2016-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jeremy的技术点滴

保存mysql InnoDB的auto_increment值另类方案

2715
来自专栏互联网杂技

外键约束

外键约束 foreign key 外键约束的要求: 父表和字表必须使用相同的存储引擎,禁止使用临时表; 数据库引擎只能是InnoDB; 外键列和参照列必须具有...

3579
来自专栏我的博客

Sqlite创建表以及默认当前时间

1、创建数据库 CREATE TABLE Joyous_sqlite ( id INTEGER NOT NULL, create_time TIMESTAM...

2513
来自专栏码农二狗

mysql无符号整型溢出

1224
来自专栏java初学

数据库索引

43517
来自专栏抠抠空间

MySql之数据操作

一、增 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3...

2828
来自专栏WebDeveloper

Mysql数据库应用(一)

1642
来自专栏吴柯的运维笔记

MySQL索引类型及用法

2017年9月13日 12:55 索引类型: ? index索引: ? 在已有表中创建index索引: create index 索引名 on 表名(字段名)...

2998
来自专栏别先生

mysql根据分组和条件查询以后如何统计记录的条数

1、子查询,查询出的数据随便起一个别名,然后根据分组和条件查询出的数据,作为一个具有一列的一个表,然后外面的查询查询这个数据表的这一列的总数,即可。    

1312
来自专栏抠抠空间

MySQL 如何删除有外键约束的表数据

今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

1043

扫码关注云+社区