美文网首页
分布式唯一主键生成方式(1):flickr的Ticket服务

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

作者: one_zheng | 来源:发表于2018-08-14 11:18 被阅读14次

    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

    优点:

    • 非常简单,利用现有数据库系统的功能实现,成本小,有DBA专业维护。
    • ID号单调自增,可以实现一些对ID有特殊要求的业务。

    缺点:

    • ID只是一个ID,没有带入时间,shardingId等信息。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/lcbmbftx.html