美文网首页
分布式系统唯一id

分布式系统唯一id

作者: 刘荣杰 | 来源:发表于2021-05-26 15:14 被阅读0次

数据库分表分库的必要性

  随着数据库数据量和访问量的增加,无论是读写分离还是主从分离都无法摆脱数据库自身的IO瓶颈,到后期分表分库将成为必然,那么在分表分库后如何保证主键的唯一性。

主键唯一性算法

UUID

  想要得到一个具有唯一性的ID,我们会想到UUID,毕竟生成的UUID全球唯一,优点是直接本地生成,足够简单,但是缺点也很明显,长度过长无论是查询还是存储对性能消耗都比较大,并且UUID是无序的在innodb由于主键是聚类索引,所以每一次新增和删除都浪费性能。

基于数据库自增ID

  利用一个MYSQL实例来生成自增ID,然后分配给分布式数据库,优点是简单,缺点还是在高并发请求时MYSQL实例的性能瓶颈,并且强依赖于该MYSQL.

基于数据库集群模式

  多个数据库都采取自增手段,但是起始值不一样,自增步长一样如
两台:
起始值1,步长2: 1,3,5,7...
起始值2,步长2:2,4,6,8,10...
保证唯一,优点简单方便,缺点:拓展性差,当有更多数据库咋办,原有基础上难以拓展。

snowflake雪花算法

  如图所示


image.png

优点简单,有顺序,缺点:长度过长

基于数据库的号段模式

  号段模式可以理解为从数据库批量的获取自增ID,每次从数据库取出一个号段范围,例如 (1,1000] 代表1000个ID,具体的业务服务将本号段,生成1~1000的自增ID并加载到内存。等这批号段ID用完,再次向数据库申请新号段,对max_id字段做一次update操作,update max_id= max_id + step,update成功则说明新号段获取成功,新的号段范围是(max_id ,max_id +step]。

相关文章

  • 分布式唯一ID实现

    分布式唯一ID实现在业务开发中,大量场景需要用到唯一ID,比如系统流水号,订单号等等。那么,分布式唯一ID有哪些特...

  • 生成分布式序列ID

    生成分布式序列ID 介绍 在很多分布式系统中,需要生成唯一的id。如在分库分表的情况下,给某个逻辑表生成唯一id。...

  • 从给apache sharding-sphere提交的issue

    很多的分布式系统的唯一ID都是基于雪花算法生成的,apache sharding-sphere的分布式ID也是采用...

  • 五大分布式ID生成器优缺点及对比

    首选,不管是不是分布式系统,都有 ID 唯一的使用场景。而在分布式场景下,对 ID 的唯一性要求更严格! 常见的,...

  • UUID

    IdWorker.java 高并发分布式系统中生成全局唯一Id汇总 Twitter的分布式自增ID算法snowf...

  • 分布式系统唯一ID生成方案

    一、什么是分布式系统唯一 ID 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。 如在金融、电商、支付...

  • 分布式系统全局唯一ID简介、特点、5种生成方式

    什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在金融、电商、支付、等产品...

  • 全局唯一ID设计

    在分布式系统中,经常需要使用全局唯一ID查找对应的数据。产生这种ID需要保证系统全局唯一,而且要高性能以及占用相对...

  • 分布式系统唯一id

    数据库分表分库的必要性   随着数据库数据量和访问量的增加,无论是读写分离还是主从分离都无法摆脱数据库自身的IO瓶...

  • 分布式 ID 生成方式

    一、为什么要用分布式ID?1、什么是分布式ID?全局唯一ID就叫分布式ID。 2、那么分布式ID需要满足那些条件?...

网友评论

      本文标题:分布式系统唯一id

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