数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键

Posted 芋道源码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键相关的知识,希望对你有一定的参考价值。

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表

  2. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。

  3. 新的源码解析文章实时收到通知。每周更新一篇左右。

  4. 认真的源码交流微信群。


本文主要基于 Sharding-JDBC 1.5.0 正式版

  • 1. 概述

  • 2.KeyGenerator

    • 2.1 DefaultKeyGenerator

    • 2.2 HostNameKeyGenerator

    • 2.3 IPKeyGenerator

    • 2.4 IPSectionKeyGenerator

  • 666. 彩蛋


1. 概述

本文分享 Sharding-JDBC 分布式主键实现。

官方文档《分布式主键》对其介绍及使用方式介绍很完整,强烈先阅读。下面先引用下分布式主键的实现动机:

传统数据库软件开发中,主键自动生成技术是基本需求。而各大数据库对于该需求也提供了相应的支持,比如mysql的自增键。对于MySQL而言,分库分表之后,不同表生成全局唯一的Id是非常棘手的问题。因为同一个逻辑表内的不同实际表之间的自增键是无法互相感知的,这样会造成重复Id的生成。我们当然可以通过约束表生成键的规则来达到数据的不重复,但是这需要引入额外的运维力量来解决重复性问题,并使框架缺乏扩展性。

目前有许多第三方解决方案可以完美解决这个问题,比如UUID等依靠特定算法自生成不重复键,或者通过引入Id生成服务等。 但也正因为这种多样性导致了Sharding-JDBC如果强依赖于任何一种方案就会限制其自身的发展。

基于以上的原因,最终采用了以JDBC接口来实现对于生成Id的访问,而将底层具体的Id生成实现分离出来。


Sharding-JDBC 正在收集使用公司名单:传送门。

以上是关于数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键的主要内容,如果未能解决你的问题,请参考以下文章

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由之分库分表路由

解读分库分表中间件Sharding-JDBC

分库分表开源中间件之Sharding-JDBC使用体验

分库分表中间件sharding-jdbc的使用

分库分表Sharding-JDBC入门与项目实战

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 执行