sharding-jdbc源码主要有以下几个模块:sharding-jdbc-config-parent、sharding-jdbc-core、sharding-jdbc-doc、sharding-jdbc-example、sharding-jdbc-plugin、sharding-jdbc-transaction-parent;由模块命名很容易知道模块的作用:
在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。
前段时间写了篇如何使用Sharding-JDBC进行分库分表的例子,相信能够感受到Sharding-JDBC的强大了,而且使用配置都非常干净。官方支持的功能还包括读写分离、分布式主键、强制路由等。这里再介绍下如何在分库分表的基础上集成读写分离的功能。
在开始之前,不得不吐槽下,全网的Sharding-JDBC的资料太少了,而且大部分资料都是1.X的版本,那是很早的版本,现在Sharding-JDBC已经发展到4.X啦。还有就是大部分都停留在说概念的层面,来回讲Sharding-JDBC的一些基础概念,实战的demo少之又少,这还有些demo根本跑不起来。我就想问一下,亲们到底自己有没有跑过啊?哎,我真的是太难了。
Sharding-JDBC是当当网研发的开源分布式数据库中间件,从3.0开始Sharding-JDBC就被包含在Sharding-Sphere中,之后该项目进入Apache孵化器,4.0版本之后就是Apache版本。
本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为2.0.3)进行分库分表; 假设分库分表行为如下:
ShardingSphere简介 Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式
Apache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这几款独立的产品组成。这些组件都提供标准化的数据分片、分布式事务和数据库治理功能,可以适用于Java架构、异构语言、容器、云原生等多种多样的应用场景。ShardingSphere的项目演变如图:
进入sharding-spring-boot-mybatis-example模块,先来通过boot和mybatis整合版本整理下基本功能: 关于springboot autoconfigure部分,看下面的sharding-jdbc-spring-boot-starter的截图:
Sharding-JDBC定义为轻量级的java框架,目前也只能应用于java语言,在java的JDBC层提供额外拓展的服务。它使用客户端直接连接数据库,以jar包的形式提供服务,不需要额外的依赖和部署,可以理解一个加强版的JDBC驱动,可以兼容JDBC和各种ORM框架的使用
Sharding-Sphere 是一个开源的分布式数据库中间件,提供了分库分表、读写分离、分布式事务等功能,支持 MySQL、Oracle、SQL Server 等主流数据库。本文将介绍 Sharding-Sphere 的使用方法和代码示例。
上文我们介绍Sharding-JDBC 分库分表(ShardingSphere 数据分片 ||链接:https://blog.csdn.net/weixin_38003389/article/details/90518112),我是用的是 java的配置方式,缺点就是有代码入侵性,其实我也完全可以用配置实现的。本文就给大家介绍一下 Sharding-JDBC 基于 配置进行读写分离。
本文是Sharding-JDBC采用Spring Boot Starter方式配置第二篇,第一篇是读写分离讲解,请参考:《Spring Boot中整合Sharding-JDBC读写分离示例》
在上一篇文章介绍了如何使用Sharing-JDBC实现数据库的读写分离。读写分离的好处就是在并发量比较大的情况下,将查询数据库的压力 分担到多个从库中,能够满足高并发的要求。比如上一篇实现的那样,架构图如下:
sharding-jdbc2.x核心功能之一就是orchestration,即编排治理,什么意思呢?官方文档介绍--2.0.0.M1版本开始,sharding-jdbc提供了数据库治理功能,主要包括:
jdk:1.8 framework: spring boot, sharding jdbc database: MySQL
在Matrix-web后台管理系统中,使用到了数据库的读写分离技术。采用的开源的Sharding-JDBC作为数据库读写分离的框架。Matrix-Web后台数据库这一块采用的技术栈如下:
from https://yq.aliyun.com/articles/596026
使用Sharding-JDBC完成对订单表的水平分表,通过快速入门程序的开发,快速体验Sharding-JDBC的使用。人工创建两张表,t_order_1和t_order_2,这张表是订单表替换后的表,通过Shading-JDBC向订单表插入数据,按照一定的分片规则,主键为偶数的尽入t_order_1,另一部分数据进入t_order_2,通过Shading-Jdbc查询数据,根据SQL语句的内容从t_order_1或order_2查询数据。
因为使用我们使用Sharding-JDBC Spring Boot Starter,所以还是只需要在properties配置文件配置主从库的数据源即可
分库分表用于应对当前互联网常见的两个场景——大数据量和高并发。通常分为垂直拆分和水平拆分两种。
个人博客纯净版:https://www.fangzhipeng.com/db/2019/06/26/shardingjdbc-master-slave.html
sharding-jdbc在目前微服务和各种saas软件等数据量日益加大的情况下变得使用的人多了起来。
Sharding-JDBC是分布式数据中间件Sharding-Sphere中的重要组成部分,官方的介绍如下:
或者稍微测一下 能保存数据并且两个库都有 说明保存到了主库上 主库同步到了从库 然后在数据库改一下从库的数据 如果查到的数据是从库改的数据 说明查询是在从库差的
这位读者什么意思呢?简单的总结下:在Sharding-JDBC中明明只是简单的使用@Transactional这个本地事务注解,为什么在跨库插入数据时候却能够同时回滚?
在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphere,最终我选择后者,用它来做分库分表比较容易上手。
这是《ShardingSphere 进阶》专栏的第一篇文章,介绍一下Sharding-JDBC实现分库分表的详细配置。
Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
京东数科数据研发负责人,Apache ShardingSphere发起人兼PPMC。
数据库分库分表从互联网时代开启至今,一直是热门话题。在NoSQL横行的今天,关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。
本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为1.5.4.1)进行分库分表; 假设分库分表行为如下:
潘娟,京东金融高级DBA,主要负责京东金融生产数据库运维及数据库平台、中间件开发工作。多次参与京东金融6.18、11.11大促活动的护航工作。曾负责京东金融数据库自动化平台设计与开发项目,现专注于Sharding-Sphere分布式数据库中间件开发。乐于在数据库、自动化、分布式、中间件等相关领域进行学习和探索。
大家好,我是BNTang,最近又去忙其他事情去了,终于有时间来水一篇文章啦,本文给大家介绍一下如何使用 ShardingSphere + MySQL 进行分表分表,分表分库之后我们又该如何进行查询,好了废话不多说开始咯。
为了减轻每台MySQL主机的访问压力,还可以对MySQL进行读写分离,实际上,主从复制和读写分离一般就是联合使用的。
Sharding-JDBC是一个开源的Java中间件,它为关系型数据库提供了分片(sharding)功能。分片是一种数据库架构模式,通过将数据分散存储在多个数据库中,提高了系统的扩展性和性能。
Tech 导读 本文以降低sharding-jdbc数据库连接数实践为主线,探究了sharding-jdbc的路由规则,对比分析了四种改造方案,给出了一种自定义分表算法的优化方案。
本文主要研究一下sharding-jdbc的XAConnectionWrapper
你们团队使用SpringMVC+Spring+JPA框架,快速开发了一个NB的系统,上线后客户订单跟雪花一样纷沓而来。
Sharding-JDBC是一个开源的适用于微服务的分布式数据访问基础类库,它始终以云原生的基础开发套件为目标。
之前的几篇文章,阿粉已经说了这个SpringBoot整合 Sharding-JDBC 实现了水平的分库分表,也是我们在日常的业务中最经常用到的,把数据进行水平分库,比如按照日期分库,按照奇偶性用户ID来水平分库,今天阿粉来说说如何使用 Sharding-JDBC 进行垂直切分表和数据库。
这句SQL会使得MySQL在无法利用索引的情况下跳过1000000条记录后,再获取10条记录,其性能可想而知。而在分库分表的情况下(假设分为2个库),为了保证数据的正确性,SQL会改写为:
分库分表推荐Spring Cloud Alibaba+Seata+Shardingsphere
经过读写分离的优化后,小王可算是轻松了一段时间,读写分离具体的方案请查看这篇文章:Sharding-JDBC:查询量大如何优化?
MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式。
一个系统最初的线上业务量并不会很大,比如说单库的数据量在百万级别以下(事实上千万级别以下都还能支撑),那么MySQL的单库即可完成任何增/删/改/查的业务操作。随着业务的发展,单个DB中保存的数据量(用户、订单、计费明细和权限规则等数据)呈现指数级增长,那么各种业务处理操作都会面临单DB的IO读写瓶颈带来的性能问题。
领取专属 10元无门槛券
手把手带您无忧上云