原文链接:http://www.javaarch.net/jiagoushi/709.htm
分布式唯一主键生成策略的一种开销比较小的方法 分布式场景下,经常需要做分库分表,master和master结构,那么此时就会用到全局的唯一主键id。 如果使用mysql的分区策略,master到master的复制,那么此时就需要保证分区的唯一性避免主键冲突。 我们可以使用mysql的自增列,但是mysql却无法保证物理和逻辑数据库的主键唯一性。 mysql5.6以上出现了GUID,但是GUID很大,而且如果需要建索引需要拿性能会比较差。这样对于某些查询只需要索引 或者需要利用索引来满足高并发下的性能的话,GUID会是一个性能瓶颈。 一致性哈希能够来解决GUID和分片问题,在多写少读下比较好,但是mysql确实用来优化为快速的随机读。 所以我们就就试试中心化一个数据库,将单独一个数据库作为自增列生成机器,mysql的replase into和INSERT ... ON DUPLICATE KEY UPDATE是来解决主键冲突的问题,当主键存在时,当前记录会替换更新旧记录 http://dev.mysql.com/doc/refman/5.0/en/replace.html和http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 比如创建64位的自增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 SELECT * from Tickets64 输出: +-------------------+------+ | id | stub | +-------------------+------+ | 72157623227190423 | a | +-------------------+------+ 如果我需要一个全局的唯一的64位id,则执行: REPLACE INTO Tickets64 (stub) VALUES ('a'); SELECT LAST_INSERT_ID(); 这里flickr使用两台数据库作为自增序列生成,但是这里怎么避免单点故障问题还没有有效的方案,只是通过这两台机器做主备和负载均衡。 TicketServer1: auto-increment-increment = 2 auto-increment-offset = 1 TicketServer2: auto-increment-increment = 2 auto-increment-offset = 2 原文请查看:http://code.flickr.net/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/
相关推荐
分布式ID生成,主键生成,Java实现的snowflake算法
分布式数据库中全局唯一主键生成策略的设计与实现,胡云亭,王晶,随着互联网的发展以及数据的爆炸式增长,集中式数据库已经无法满足海量数据快速存储和查询的要求了,这时分布式数据库应运而生。
基于java的分布式主键发生器,使用ice通讯,实现从单服务器到多层的大规模主键发生器,可以保持ID的唯一性.
分布式数据库唯一主键设计
迄今为止最全面的分布式主键ID生成器。优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...
最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、...
一种减少分布式机器学习通信开销的方法.docx
本分布式主键ID生成器基于多语言优化,包含204个文件,包括Markdown文档、Dockerfile、Go源代码、Java源代码、GIT忽略文件、Header文件、C#源代码、C源代码、Pascal源代码、Rust源代码。系统采用优化的雪花算法...
迄今为止最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...
分布式架构系统生成全局唯一序列号的一些思路对比分析 分布式架构系统生成全局唯一序列号的一些思路对比分析
细聊分布式ID生成方法.pdf
该策略会根据雪花算法生成主键ID,主键类型为Long或String(具体到MySQL数据库就是BIGINT和VARCHAR),该策略使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) ...
分布式ID生成,主键生成策略,snowflake算法,采用java实现。
20、详细分析ShardingSphere新接入的CosID分布式主键生成框架_ev.rar
分布式系统唯一ID生成方案
java 分布式 代码生成器 唯一ID
迄今为止最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...
一种分布式远程绘制方法 一种分布式远程绘制方法一种分布式远程绘制方法
为满足主动配电网中分布式光伏在线调控的需求,本文提出了一种基于电压灵敏度分析的分布式光伏在线调控策略,同时可以实现配电网的电压调节。推导出配电网电压对节点注入功率的灵敏度矩阵,建立分布式光伏自动发电...
mysql雪花算法生成唯一整型ID主键的实现方法,整型ID作为主键好处有很多,比如节省存储空间、插入和查询排序快、具有一定规律性(时间顺序)等。