数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键
Posted 芋道源码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键相关的知识,希望对你有一定的参考价值。
RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
新的源码解析文章实时收到通知。每周更新一篇左右。
认真的源码交流微信群。
本文主要基于 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 源码分析 —— 分布式主键的主要内容,如果未能解决你的问题,请参考以下文章