Sharding-JDBC

Sharding-JDBC — 读写分离(spring boot)

折月煮酒 提交于 2019-12-06 08:32:45
我们的项目,很多都涉及到了数据库的操作。数据库的稳定性显得尤为重要。互联网公司很多都采用“ 一主多从 ”的实现方案,我这里也不例外。这样可以大大 减少主库的读压力 ,从而提高数据库性能! 同时,选择一套靠谱的中间件来实现读写分离,也尤为重要。通常有几个选择: AOP切面实现数据源的切换。 sharding-jdbc、tddl等jdbc增强版的数据库中间件。 mycat、atlas等代理层的数据库中间件。 这里,考虑到性能需求,我选择了sharding-jdbc。 直接上实现! 依赖 下面两个依赖,根据选择的版本不同,选择的依赖包不同: Sharding-Sphere版:(3.0及之后的版本) <dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc</artifactId> <version>${latest.release.version}</version> </dependency> Sharding-JDBC版:(3.0之前的版本) <!-- 引入sharding-jdbc核心模块 --> <dependency> <groupId>io.shardingjdbc</groupId> <artifactId>sharding-jdbc-core-spring-boot

Spring boot项目集成Sharding Jdbc

拈花ヽ惹草 提交于 2019-12-06 01:51:10
环境 jdk:1.8 framework: spring boot, sharding jdbc database: MySQL 搭建步骤 在pom 中加入sharding 依赖 <dependency> <groupId>io.shardingjdbc</groupId> <artifactId>sharding-jdbc-core-spring-boot-starter</artifactId> <version>2.0.3</version> </dependency> 将原来的 spring DataSource 注释掉,加入 sharding 的配置 sharding: jdbc: datasource: names: ds_0,ds_1 ds_0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver jdbc-url: jdbc:mysql://sharding0 username: mams_test password: mams_test ds_1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver jdbc-url: jdbc:mysql:/

sharding-jdbc源码解析全集

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-05 17:59:12
本文转自“天河聊技术”微信公众号 sharding-jdbc源码解析之词法解析 sharding源码解析之api分析 sharding-jdbc源码解析之spring集成 sharding-jdbc源码解析之spring集成分片构造实现 sharding-jdbc源码解析之jdbc规范重写 sharding-jdbc源码解析之sql解析 sharding-jdbc源码解析之sql解析 sharding-jdbc源码解析之sql单表或绑定表路由 sharding-jdbc源码解析之多库表sql路由 sharding-jdbc源码解析之sql改写 sharding-jdbc源码解析之sql执行 sharding-jdbc源码解析之结果集归并 来源: oschina 链接: https://my.oschina.net/u/3775437/blog/1806120

sharding-jdbc分库分表

孤街醉人 提交于 2019-12-05 12:23:36
1、读写分离 server.port=8084 mybatis.config-location=classpath:META-INF/mybatis-config.xml #数据源名称集合,对应下面数据源配置的名称 spring.shardingsphere.datasource.names=master,slave # 主数据源 spring.shardingsphere.datasource.master.type=com.alibaba.druid.pool.DruidDataSource spring.shardingsphere.datasource.master.driver-class-name=com.mysql.jdbc.Driver spring.shardingsphere.datasource.master.url=jdbc:mysql://localhost:3306/ds_0?characterEncoding=utf-8 spring.shardingsphere.datasource.master.username=root spring.shardingsphere.datasource.master.password=1234 # 从数据源 spring.shardingsphere.datasource.slave.type=com

分库分表框架

自闭症网瘾萝莉.ら 提交于 2019-12-05 07:18:29
1、TDDL 注意:tddl2.0是2010年的版本,已经没有人维护了。当前版本是5.1.7,网上能够找到的最新版本。项目地址为: https://www.oschina.net/p/tddl5 淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。 主要优点: 1.数据库主备和动态切换 2.带权重的读写分离 3.单线程读重试 4.集中式数据源信息管理和动态变更 5.剥离的稳定jboss数据源 6.支持mysql和oracle数据库 7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源 8.无server,client-jar形式存在,应用直连数据库 9.读写次数,并发度流程控制,动态变更 10.可分析的日志打印,日志流控,动态变更 TDDL必须要依赖diamond配置中心(diamond是淘宝内部使用的一个管理持久配置的系统,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理,同时diamond也已开源)。 TDDL动态数据源使用示例说明: http://rdc.taobao.com/team/jm/archives

Sharding-JDBC往事

我们两清 提交于 2019-12-05 02:42:24
2015年夏天我们在北京静安中心12层当当架构部启动自研数据库中间件项目的时候,完全没想过3年多之后,这个项目会成为首个加入Apache基金会的分布式数据库中间件开源项目,并在超过60家公司的系统中投入应用。 Apache ShardingSphere ,发端于Sharding-JDBC, 记得当年为了取名字,张亮颇为纠结了几天,叫Shard还是Sharding?SQL还是JDBC?最后命名为Sharding-JDBC。如今,张亮在京东数科组建团队,继续主导Apache ShardingSphere项目,发布了3.0版本,产品生态圈进一步扩展,Sharding-Proxy已成型,Sharding-Sidecar正在孵化中,Apache ShardingSphere将支持云原生,成为金融云上的数据库服务,未来发展令人期待。而我呢,离开当当整整两年,回首往事,仿佛就在昨天,但又很是遥远,曾经的同事们也星散四方,在各自的道路继续向前,有着更好的发展。 向前追溯,这一切的缘起是在2014年,那时当当架构部招兵买马,引进多名架构师,包括沈理、张亮、邓学祥、董四辈、池田、吴翊以及年底来的曹昊,我们以技术委员会的名义发起针对互联网主流技术架构的调研,包含了SOA服务框架、定时任务管理、消息队列、数据库中间件几个专题,以此为契机推动当当技术架构转型升级。当时开源的数据库中间件已经有MyCat

数据库(分库分表)中间件对比

非 Y 不嫁゛ 提交于 2019-12-03 15:22:28
数据库(分库分表)中间件对比 https://www.cnblogs.com/cangqiongbingchen/p/7094822.html 基本概念:分区,分片,分表,分库 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表呢,还是一张表。分区可以把表分到不同的硬盘上,但不能分配到不同服务器上。 优点:数据不存在多个副本,不必进行数据复制,性能更高。 缺点:分区策略必须经过充分考虑,避免多个分区之间的数据存在关联关系,每个分区都是单点,如果某个分区宕机,就会影响到系统的使用。 分片:对业务透明,在物理实现上分成多个服务器,不同的分片在不同服务器上 个人感觉跟分库没啥区别,只是叫法不一样而已,值得一提的是关系型数据库和nosql数据库分片的概念以及处理方式是一样的吗? 请各位看官自行查找相关资料予以解答 分表:当数据量大到一定程度的时候,都会导致处理性能的不足,这个时候就没有办法了,只能进行分表处理。也就是把数据库当中数据根据按照分库原则分到多个数据表当中, 这样,就可以把大表变成多个小表,不同的分表中数据不重复,从而提高处理效率。 分表也有两种方案: 1. 同库分表:所有的分表都在一个数据库中,由于数据库中表名不能重复

sharding-jdbc分库分表

偶尔善良 提交于 2019-12-03 12:35:39
数据库分片思想 垂直切分 按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用。 水平切分 水平分片又称为横向拆分。 相对于垂直分片,它不再将数据根据业务逻辑分类,而是通过某个字段(或某几个字段),根据某种规则将数据分散至多个库或表中,每个分片仅包含数据的一部分。 例如:根据主键分片,偶数主键的记录放入0库(或表),奇数主键的记录放入1库(或表) Sharding-JDBC简介 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。 Sharding-JDBC采用无中心化架构,适用于Java开发的高性能的轻量级OLTP应用; 功能列表 分库 & 分表 读写分离 分布式主键 引入依赖 <dependency> <groupId>io.shardingjdbc

Spring Boot集成Sharding-jdbc + Mybatis-Plus实现分库分表

余生颓废 提交于 2019-12-03 12:31:20
Spring Boot集成Sharding-jdbc实现分库分表 一、 Sharding-jdbc简介 二、项目结构 三、总结 参考资料 一、 Sharding-jdbc简介 Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 官方文档地址: https://shardingsphere.apache.org/document/current/cn/overview/ 本文demo实现了分库分表功能。 作者能力有限,如有错误,欢迎各位在评论中指出。不胜感激! 二、项目结构 首先创建一个一般的Spring boot项目,项目采用三层架构,结构图如下: POM.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://maven.apache.org/POM/4.0