分布式唯一主键生成方式(1):flickr的Ticket服务

2018-08-14  本文已影响14人  one_zheng

flickr

这是Flickr团队在2010年撰文介绍的一种主键生成策略(Ticket Servers: Distributed Unique Primary Keys on the Cheap

flickr巧妙地使用了mysql的自增ID,及replace into语法,十分简洁地实现了分片ID生成功能。

首先,创建一个表:

CREATE TABLE Tickets64 (
id bigint(20) unsigned NOT NULL auto_increment,
stub char(1) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY stub (stub)
) ENGINE=MyISAM

使用上面的sql可以得到一个ID:
REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
因为使用了replace into的语法,实际上,Tickets64这个表里的数据永远都是这样的:

id stub
72157623227190423 a

那么如何解决单点故障呢。
很简单,利用mysql的自增ID即可。比如有两台ID生成服务器,设置成下面即可:

TicketServer1:
auto-increment-increment = 2
auto-increment-offset = 1

TicketServer2:
auto-increment-increment = 2
auto-increment-offset = 2

优点:

缺点:

上一篇下一篇

猜你喜欢

热点阅读