美文网首页
分布式唯一主键生成方式(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服务

    flickr 这是Flickr团队在2010年撰文介绍的一种主键生成策略(Ticket Servers: Dist...

  • [分布式]SnowFlake算法

    背景 现在的服务基本上都是分布式服务,经常会使用生成唯一主键的功能,如何在分布式服务上生成高效、不重复的主键呢 方...

  • 分布式锁之复合锁

    业务场景: 分布式架构下A服务需要使用分布式锁来解决资源共享问题,同时A服务需要调用B服务生成全局唯一业务主键,B...

  • 分布式主键生成算法

    这篇文章总结了分布式主键或者唯一键的生成算法,文章最后有我们基于snowflow算法的思考和实践。 分布式主键的生...

  • 唯一主键生成方式

    做后端开发数据表的主键生成方式项目前期可能觉的无所谓,有用递增的、UUID的、中心服务生成主键的,这些方式各有利弊...

  • 第一次商讨

    1. 数据库 Mysql Oracle 主键,Oracle 用Sequence生成主键,主键唯一,各表共用一个自增...

  • mysql实践之唯一索引和普通索引如何选

    主键索引:会进行主键约束,并且是唯一索引,生成的索引是主键索引;唯一索引:主键是特殊的唯一索引,但是唯一索引可以为...

  • 分布式锁

    数据库实现分布式锁1.1 利用主键唯一规则:​ 数据库的唯一主键,不能重复。利用主键唯一规则,在争抢锁的时候...

  • 数据库主键的设计

    九种分布式ID生成方式 一、数据库主键的设计原则 主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外...

  • 分布式唯一主键生成方式(2):snowflake算法

    转载:https://juejin.im/post/5a7f9176f265da4e721c73a8 snowfl...

网友评论

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

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