Sharding-JDBC

dubbo源码解析之服务export 远程服务②

大城市里の小女人 提交于 2019-11-30 17:59:27
说在前面 前期回顾 sharding-jdbc源码解析 更新完毕 spring源码解析 更新完毕 spring-mvc源码解析 更新完毕 spring-tx源码解析 更新完毕 spring-boot源码解析 更新完毕 rocketmq源码解析 更新完毕 dubbo源码解析 更新中 sharding-sphere源码解析 计划中 netty源码解析 计划中 spring-cloud-alibaba-dubbo源码解析 计划中 github https://github.com/tianheframe sharding-jdbc源码解析 更新完毕 rocketmq 更新完毕 dubbo源码解析 更新中 seata源码解析 更新中 spring-cloud-tianhe 更新中 mq-tianhe 计划中 rpc-tianhe 计划中 源码解析 https://github.com/tianheframe /dubbo.git dubbo源码解析后的源码和公号文章同步更新。 返回到这个方法,服务注册信息恢复com.alibaba.dubbo.registry.support.FailbackRegistry#recover @Override protected void recover() throws Exception { // 获取服务注册的url集合 Set<URL>

Sharding-Sphere读写分离

风格不统一 提交于 2019-11-30 08:14:09
摘要 示例 脚本 脚本及pom依赖参考: Sharding-JDBC数据分库分表实践(垂直分库分表) springboot配置 spring.shardingsphere.datasource.names=sharding0,sharding1 spring.shardingsphere.datasource.sharding0.type=com.alibaba.druid.pool.DruidDataSource spring.shardingsphere.datasource.sharding0.driver-class-name=com.mysql.cj.jdbc.Driver spring.shardingsphere.datasource.sharding0.url=jdbc:mysql://139.196.229.195:3306/sharding0?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL spring.shardingsphere.datasource.sharding0.username=root spring

Sharding-Jdbc

爱⌒轻易说出口 提交于 2019-11-30 06:29:27
Sharding-Jdbc 基于Sharding-Jdbc实现读写分离 基于Sharding-Jdbc实现分表分库 Sharding-Jdbc源码分析 数据库集群自动增长id,Sharding-Jdbc 雪花算法 Sharding-Jdbc介绍 Sharding-Jdbc在3.0后改名为Shardingsphere它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 Sharding-Sphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。 应用场景: 数据库读写分离 数据库分表分库 相关资料: Sharding-Jdbc官方网址: http://shardingsphere.io/index_zh.html 改名新闻: https://www.oschina.net/news/95889/sharding-jdbc-change-to

23. sharding-jdbc源码之orchestration简介&使用

不羁的心 提交于 2019-11-30 06:29:11
阿飞Javaer ,转载请注明原创出处,谢谢! sharding-jdbc2.x核心功能之一就是orchestration,即编排治理,什么意思呢?官方文档介绍–2.0.0.M1版本开始,sharding-jdbc提供了数据库治理功能,主要包括: - 配置集中化与动态化。可支持数据源、表与分片及读写分离策略的 动态切换 ; - 数据治理。提供熔断数据库访问程序对数据库的访问和禁用从库的访问的能力; - 支持Zookeeper和etcd的注册中心; 摘自 sharding-jdbc编排治理 ,官方文档也有比较详细的使用文档; 1.架构图 由sharding-jdbc2.x新的架构图可知,sharding-jdbc2.x与sharding-jdbc1.x版本最大的变化就是最左边的sharding-jdbc-orchestration。即为了动态修改配置引入的注册中心和编排模块。而sharding-jdbc内部实现架构几乎没有任何改变。 2. 注册中心数据结构 注册中心在定义的命名空间下,创建数据库访问对象运行节点,用于区分不同数据库访问实例。命名空间中包含2个数据子节点,分别是config和state。 config节点 config节点信息如下: config ├──datasource 数据源(可能多个,数据结构为json数组)配置 ├──sharding 分库分表(包括分库分表

当当网 / sharding-jdbc

时光怂恿深爱的人放手 提交于 2019-11-30 06:28:54
地址:https://git.oschina.net/dangdangdotcom/sharding-jdbc harding-JDBC - A JDBC driver for shard databases and tables Sharding-JDBC 是当当应用框架 ddframe 中,关系型数据库模块 dd-rdb 中分离出来的数据库水平扩展框架,即透明化数据库分库分表访问。 Sharding-JDBC 继 dubbox 和 elastic-job 之后,是 ddframe 系列开源的第三个产品。 Release Notes sharding-jdbc sharding-jdbc-core sharding-jdbc-config-yaml sharding-jdbc-config-spring sharding-jdbc-transaction sharding-jdbc-transaction-async-job sharding-jdbc-self-id-generator License Build Status 主要贡献者 张亮 当当 zhangliang@dangdang.com 高洪涛 当当 gaohongtao@dangdang.com 曹昊 当当 caohao@dangdang.com 岳令 当当 yueling@dangdang.com 交流与参与

Sharding-JDBC 3.x 原理篇之基本介绍

徘徊边缘 提交于 2019-11-30 06:28:31
Sharding-JDBC 3.x 原理篇之基本介绍 简介 功能介绍 Sharding-JDBC Sharding-Proxy Sharding-Sidecar 混合架构 各大版本间的区别与变化 1.x 功能列表 2.x 功能清单 3.x 功能清单 规划线路图 相关文档及实例 简介 Sharding-JDBC是当当开源的数据库水平切分的中间件,其代表了客户端类的分库分表技术框架(这一点与MyCat不同,MyCat本质上是一种数据库代理)。Sharding-JDBC定位为轻量级数据库驱动,由客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,业务系统开发人员与数据库运维人员无需改变原有的开发与运维方式。因此Sharding-JDBC即为增强版的JDBC驱动,可以实现旧代码迁移零成本的目标。   目前社区较为活跃。目前已广泛应用于现各大互联网公司。通过社区得知,Sharding-JDBC的作者已去京东做全职的Sharding-JDBC开发,相信未来Sharding-JDBC社区的发展将会更好。 功能介绍 目前Sharding-JDBC共有3个主要模块,分别为Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar Sharding-JDBC 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。

sharding-jdbc读写分离原理解读

送分小仙女□ 提交于 2019-11-30 06:25:16
前言 很多时候,为了应付DB的高并发读写,我们会采用读写分离技术。读写分离指的是利用数据库主从技术(把数据复制到多个节点中),分散读多个库以支持高并发的读,而写只在master库上。DB的主从技术只负责对数据进行复制和同步,而读写分离技术需要业务应用自身去实现。sharding-jdbc通过简单的开发,可以方便的实现读写分离技术。本篇主要介绍其实现的原理。 sharding-jdbc读写分离特性说明 sharding-jdbc官方对其支持的读写分离技术进行了说明: 支持项 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。 同个调用线程,执行多条语句,其中一旦发现有非读操作,后续所有读操作均从主库读取。 Spring命名空间。 基于Hint的强制主库路由。 不支持范围 主库和从库的数据同步。 主库和从库的数据同步延迟导致的数据不一致。 主库双写或多写。 简单说明 sharding-jdbc实现读写分离技术的思路比较简洁,不支持类似主库双写或多写这样的特性,但目前来看,已经可以满足一般的业务需求了。 读写分离实现demo 库和表的设计结构如下: 简单的java代码示例: public final class MasterSlaveMain { public static void main ( final String[] args) throws

13. sharding-jdbc源码之读写分离

牧云@^-^@ 提交于 2019-11-30 06:24:30
阿飞Javaer ,转载请注明原创出处,谢谢! 读写分离支持项 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。 Spring命名空间。 基于Hint的强制主库路由。 读写分离不支持范围 主库和从库的数据同步。 主库和从库的数据同步延迟导致的数据不一致。 主库双写或多写。 读写分离支持项和不支持范围摘自 sharding-jdbc使用指南☞读写分离 源码分析 先执行 sharding-jdbc-example-config-spring-masterslave 模块中的的SQL脚本 all_schema.sql ,这里有读写分离测试的需要的数据库、表以及数据; - 两个主数据库 dbtbl_0_master 和 dbtbl_1_master ; - 数据库 dbtbl_0_master 有两个从库 dbtbl_0_slave_0 和 dbtbl_0_slave_1 ,这个集群命名为 dbtbl_0 ; - 数据库 dbtbl_1_master 有两个从库 dbtbl_1_slave_0 和 dbtbl_1_slave_1 ,这个集群命名为 dbtbl_1 ; 对应的xml配置如下: < rdb:master-slave-data-source id = "dbtbl_0"

14. sharding-jdbc源码之异常处理

前提是你 提交于 2019-11-30 06:24:11
阿飞Javaer ,转载请注明原创出处,谢谢! 一般项目都会有自己的一套异常处理方式,sharding-jdbc也不以外,sharding-jdbc源码处理异常的方式主要有下面2种方式: 1. Preconditions 2. 自定义异常 1. Preconditions google-guava的Preconditions用于条件检查,不符合预期的话则抛出异常,并可以重写异常信息。google-guava源码中Preconditions的注释如下: Static convenience methods that help a method or constructor check whether it was invoked correctly (whether its preconditions have been met). These methods generally accept a boolean expression which is expected to be true ( or in the case of checkNotNull, an object reference which is expected to be non-null). When false ( or null) is passed instead, the Preconditions

sharding-jdbc读写分离源码分析

微笑、不失礼 提交于 2019-11-30 06:23:45
sharding-jdbc读写分离源码分析 由于最近生产上单点数据库有瓶颈,准备使用读写分离来提高应用的性能,在框架调研的过程中发现当当网的开源数据库驱动框架sharding-jdbc,读写分离的功能无需修改应用的代码只需要使用xml或者配置文件配置多个数据源,一时好奇想看看是怎么实现的,起先第一步使用springboot快速搭建一个可查看源码的项目在idea新建一个maven项目并引入shardingjdbc 的jar包 pom.xml文件如下图所示 < parent > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-parent </ artifactId > < version > 1.4.6.RELEASE </ version > </ parent > < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-jdbc </ artifactId > </ dependency > < dependency > < groupId > mysql </ groupId > <