br/>第1章直面数据分库分表架构.1
1.1分库分表简介.1
1.1.1分库分表的基本概念.2
1.1.2分库分表解决方案和代表性框架.7
1.2实现分库分表.10
1.2.1数据分片.10
1.2.2读写分离.11
1.2.3分布式事务.12
1.3初识ShardingSphere.12
1.3.1ShardingSphere设计理念和核心组件.14
1.3.2ShardingSphere解决方案.18
1.4本书架构.21
1.5本章小结.22
第2章引入ShardingSphere.23
2.1ShardingSphere的使用方式.23
2.1.1数据库和JDBC驱动集成.24
2.1.2开发框架集成.25
2.1.3ORM框架集成.32
2.2ShardingSphere的配置机制.34
2.2.1行表达式.34
2.2.2ShardingSphere的核心配置.35
2.2.3ShardingSphere的配置方式.38
2.2.4ShardingSphere的配置体系.43
2.3本章小结.51
第3章ShardingSphere整体架构.53
3.1ShardingSphere与JDBC规范.53
3.1.1JDBC规范的核心组件.54
3.1.2ShardingSphere与JDBC规范的兼容性.59
3.2ShardingSphere与微内核架构模式.66
3.2.1微内核架构模式设计原理与实现.66
3.2.2ShardingSphere基于微内核架构模式实现扩展性.71
3.3ShardingSphere与Spring框架.78
3.3.1基于命名空间集成Spring框架.78
3.3.2基于自定义starter集成SpringBoot的实现过程.84
3.4本章小结.89
第4章ShardingSphere数据分片.90
4.1数据分片的核心概念.90
4.1.1绑定表与广播表.91
4.1.2分片策略与分片算法.92
4.1.3强制路由与Hint机制.97
4.1.4分布式主键.99
4.1.5连接模式.109
4.1.6分片引擎.110
4.2数据分片实例分析.117
4.3分片改造之实现分库.122
4.3.1初始化数据源.122
4.3.2设置分库策略.123
4.3.3设置绑定表与广播表.123
4.3.4设置表分片规则.124
4.4分片改造之实现分表.126
4.5分片改造之实现分库+分表.129
4.6分片改造之实现强制路由.133
4.6.1HintManager.133
4.6.2实现并配置强制路由分片算法.136
4.6.3基于强制路由访问目标库表.137
4.7本章小结.140
第5章ShardingSphere读写分离.141
5.1读写分离与ShardingSphere.141
5.1.1读写分离方案.142
5.1.2配置读写分离.142
5.2读写分离的基础用法.143
5.2.1读写分离的使用方法.143
5.2.2MasterSlaveRouter实现原理.145
5.3读写分离集成数据分片.152
5.3.1读写分离集成数据分片的实现方法.153
5.3.2ShardingMasterSlaveRouter实现原理.154
5.4读写分离集成强制路由.156
5.5本章小结.157
第6章ShardingSphere分布式事务.159
6.1分布式事务的核心概念.159
6.1.1ShardingSphere中的分布式事务.160
6.1.2XA强一致性事务实现方案.162
6.1.3BASE柔性事务实现方案.166
6.2使用XA实现两阶段提交事务.167
6.2.1开发环境准备.167
6.2.2实现XA事务.169
6.2.3XA事务实现原理.176
6.3使用Seata实现最终一致性事务.180
6.3.1开发环境准备.181
6.3.2实现BASE事务.182
6.3.3BASE事务实现原理.182
6.4本章小结.188
第7章ShardingSphere数据脱敏.189
7.1数据脱敏的核心概念.189
7.1.1敏感数据存储方式.190
7.1.2敏感数据加解密过程.191
7.1.3业务代码集成数据脱敏.191
7.2数据脱敏的使用方法.193
7.2.1准备数据脱敏.193
7.2.2配置数据脱敏.195
7.2.3执行数据脱敏.203
7.3本章小结.204
第8章ShardingSphere编排治理.205
8.1编排治理解决方案.205
8.1.1配置中心.206
8.1.2注册中心.207
8.1.3链路跟踪.208
8.2配置中心的使用方法.210
8.2.1准备开发环境.210
8.2.2掌握配置项.211
8.2.3实现配置中心.213
8.3注册中心的使用方法.217
8.3.1通过注册中心构建编排治理服务.217
8.3.2使用注册中心实现数据访问熔断.226
8.4链路跟踪的使用方法.230
8.4.1初始化第三方Tracer类.230
8.4.2通过ShardingTracer获取Tracer类.231
8.4.3基于Hook机制填充Span.233
8.5本章小结.236
第9章ShardingSphere代理服务.237
9.1Sharding-Proxy的使用方法.237
9.1.1安装和配置.238
9.1.2SQL语句.242
9.1.3SCTL语句.245
9.1.4代码集成.246
9.2Sharding-Proxy架构解析.246
9.2.1Sharding-Proxy整体架构.247
9.2.2Sharding-Proxy整合Sharding-JDBC.256
9.3本章小结.259
内容摘要
本书分为9章,主要介绍应用ShardingSphere实现分库分表的一些方法论和工程实践。通过对ShardingSphere的基本概念、应用方式和整体架构的介绍,帮助读者掌握ShardingSphere的设计思想和解决方案;然后从Sharding-JDBC和Sharding-Proxy两款核心组件出发,对分库分表、读写分离、分布式事务、数据脱敏、编排治理及代理服务器等核心功能进行详细阐述,并结合具体场景给出实例分析和实现过程。本书面向Java服务器端开发人员,读者不需要有很深的技术水平,也不需要详细了解分库分表相关工具,但如果读者熟悉Java EE常见技术并掌握一定数据访问基本概念,则有助于读者更好地理解书中的内容。通过学习本书内容,读者将对ShardingSphere的基本架构、设计思想和应用方式有更加深入的了解,为后续的工作和学习奠定基础。同时,本书可以作为具备不同技术体系的开发人员的参考用书。希望本书能给读者的日常研发和管理工作带来启发和帮助。
主编推荐
‘√ 冷启动:无需语言、数据库及相关工具的较深经验,即可掌握这一面向Java服务器端开发人员的强大的数据库分库分表工具。
√ 破瓶颈:有了ShardingSphere的帮助,海量数据的存储和访问不再是难题,可结合纵向分库和横向分表的设计方法来应对。
√ 多功能:面向数据库分库分表,提供标准数据分片|分布式事务|数据库治理功能,适用Java同构|异构语言|云原生等各场景。
√ 普及广:用户有京东|搜狐|滴滴|B站|电信|民生银行|58同城|每日优鲜|首汽约车|海尔|科大讯飞|唯品会|好未来|携程|爱奇艺等。‘
媒体评论
‘很开心看到Apache ShardingSphere社区的不断发展,越来越多的课程、文章、视频在互联网上的传播,预示着这个起源于中国本土的Apache软件基金会很好项目逐渐从青涩迈向成熟。
少有地,先是一家基于Apache ShardingSphere的商业化公司SphereEx成立,后有一部全面讲解Apache ShardingSphere实战技术的图书问世,它们构成2021年Apache ShardingSphere社区的两个标志性事件。
Apache ShardingSphere社区的繁荣,与目前国家大力倡导的开源和信创相得益彰,是中国开源迈向辉煌的开端,也是中国工程师从使用开源向反哺开源转变的真实写照。希望很好的本土开源项目如雨后春笋一般层出不穷,一起为中国科技的腾飞添砖加瓦。
至今,Apache ShardingSphere社区已经走过五年的发展历程,项目的复杂度演变得十分可观,亟需有本书这样的参考资料问世,能系统地向入门者介绍Apache ShardingSphere的适用场景和配置应用。
除基本应用外,ShardingSphere的微内核架构设计优雅、代码风格清新,很好适合开发者用心研读阅读,以提高整体编码境界。为此,本书从微内核剖析和架构设计角度出发,对ShardingSphere进行抽丝剥茧的解析,让读者能更深入地理解其内在机理。
对于这样一本的佳作,我谨代表Apache ShardingSphere社区向广大用户和开发者力荐。
——张亮,Apache ShardingSphere PMC Chair, Apache Member, SphereEx CEO‘