分布式数据库主键生成

我们用的不在列内,但有相似之处,求推广。

利用内部线程维护一个Map<表名,队列>,队列中存储若干个连续的id,这些id来源于数据库主键表(记录每个表当前主键最大值,比如user表在主键表中记录为user,1200,本地map缓存200个id,本地线程每10秒维护一次数据,当检查到id数小于100时补齐200个,id值以数据库表中的值为基础在本地递增放入队列,并将表中的值增加获取的数量。程序获取id直接从本地队列获取,如果没有则调用补齐方法然后获得id(补偿机制,缓存量合适的话不会走到这里)。由于从本地队列获取,效率非常高。注意事项是:调用补齐方法需要使用集群锁,避免两个节点并发调用获取到相同的id集合。多个服务使用相同的机制。在趋势上实现了递增,重启节点会有id区间中断。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,845评论 0 11
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,708评论 0 4
  • 回到目录 上一节:贼婆娘 发落人 回家之后赵慧兰将今年遇到可恶而又可怜的花格子老娘们的事跟轮班休息的宋一民说了。 ...
    MJ老段阅读 543评论 5 16