当前位置:   article > 正文

Mysql学习笔记---ShardingSphere的ShardingJDBC简介_shardingjdbc和shardingsphere区别

shardingjdbc和shardingsphere区别

Mysql学习笔记—ShardingSphere的ShardingJDBC简介

  1. Apache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈。它由Sharding-JDBCSharding-ProxySharding-Sidecar(规划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构异构语言容器云原生等各种多样化的应用场景。

  2. ShardingSphere项目状态如下:
    在这里插入图片描述

  3. ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库
    在这里插入图片描述

    1. Sharding-JDBC:被定位为轻量级Java框架,在Java的JDBC层提供的额外服务,以jar包形式使用。
    2. Sharding-Proxy:被定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。
    3. Sharding-Sidecar:被定位为Kubernetes或Mesos的云原生数据库代理,以DaemonSet的形式代理所有对数据库的访问。
  4. Sharding-JDBCSharding-Proxy的作用位置查看:
    在这里插入图片描述

  5. Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar三者区别如下:
    在这里插入图片描述

2. Sharding-JDBC功能介绍

  1. Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。
  2. 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架的使用。
    1. 适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
    2. 基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
    3. 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
      在这里插入图片描述

3. Sharding-JDBC主要功能:

  1. 数据分片
    1. 分库、分表
    2. 读写分离
    3. 分片策略
    4. 分布式主键
  2. 分布式事务
    1. 标准化的事务接口
    2. XA强一致性事务
    3. 柔性事务
  3. 数据库治理(治理等于管理)
    1. 配置动态化
    2. 编排和治理
    3. 数据脱敏
    4. 可视化链路追踪

4. Sharding-JDBC内部结构:

在这里插入图片描述

  1. 图中黄色部分表示的是Sharding-JDBC的入口API,采用工厂方法的形式提供。 目前有ShardingDataSourceFactoryMasterSlaveDataSourceFactory两个工厂类。
    1. ShardingDataSourceFactory支持分库分表、读写分离操作
    2. MasterSlaveDataSourceFactory支持读写分离操作
  2. 图中蓝色部分表示的是Sharding-JDBC的配置对象,提供灵活多变的配置方式。
  3. 蓝色部分ShardingRuleConfiguration是分库分表配置的核心和入口,它可以包含多个TableRuleConfigurationMasterSlaveRuleConfiguration
    1. TableRuleConfiguration封装的是表的分片配置信息,有5种配置形式对应不同的Configuration类型。
    2. MasterSlaveRuleConfiguration封装的是读写分离配置信息。
  4. 图中红色部分表示的是内部对象,由Sharding-JDBC内部使用,应用开发者无需关注。
  5. ShardingJDBC通过ShardingRuleConfigurationMasterSlaveRuleConfiguration生成真正供
    ShardingDataSourceMasterSlaveDataSource使用的规则对象。ShardingDataSourceMasterSlaveDataSource实现了DataSource接口,是JDBC的完整实现方案。

5. Sharding-JDBC的初始化流程:

  1. 根据配置的信息生成Configuration对象
  2. 通过Factory会将Configuration对象转化为Rule对象
  3. 通过Factory会将Rule对象与DataSource对象封装
  4. Sharding-JDBC使用DataSource进行分库分表和读写分离操作

6. Sharding-JDBC的使用过程:

  1. 引入Maven
    <dependency> 
    	<groupId>org.apache.shardingsphere</groupId> 
    	<artifactId>sharding-jdbc-core</artifactId> 
    	<version>${latest.release.version}</version> 
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  2. 修改规则配置
    1. Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。
  3. 创建DataSource
    1. 通过ShardingDataSourceFactory工厂和规则配置对象获取ShardingDataSource,然后即可通过DataSource选择使用原生JDBC开发,或者使用JPA, MyBatis等ORM工具。
    DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);
    
    • 1
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/757131
推荐阅读
相关标签
  

闽ICP备14008679号