基于mysql实现分布式序列id_基于数据库构建分布式的ID生成方案

在分布式系统中,生成全局唯一ID,有很多种方案,但是在这多种方案中,每种方案都有有缺点,下面我们之针对通过常用数据库来生成分布式ID的方案,其它方法会在其它文中讨论:

1,RDBMS生成ID:

这里我们讨论mysql生成ID。因为MySQL本身可以auto_increment和auto_increment_offset来保证ID自增,很自然地,我们会想到借助这个特性来实现这个功能。

全局ID生成方案里采用了MySQL自增长ID的机制(auto_increment + replace into + MyISAM)。一个生成64位ID方案具体实现是这样的:

先创建单独的数据库(eg:ticket),然后创建一个表:

CREATE TABLETickets64 (

idbigint(20) unsigned NOT NULLauto_increment,

stubchar(1) NOT NULL default '',PRIMARY KEY(id),UNIQUE KEYstub (stub)

) ENGINE=MyISAM

表创建之后我们要设置一个初始值,比如100000,执行SELECT * from Tickets64,查询结果就是这样的:

3ba36657962728aa900ef18b6e5e753b.png

每当我们的应用需要ID的时候就会做如下操作,调用如下存储过程࿱

你可能感兴趣的:(基于mysql实现分布式序列id_基于数据库构建分布式的ID生成方案)