您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
ShardingSphere-JDBC——分布式治理使用手册
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
ShardingSphere-JDBC——分布式治理使用手册
Apache ShardingSphere
2021-01-21
IP归属:未知
94880浏览
# 使用 JAVA API ## 引入 Maven 依赖 ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-governance</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 ZooKeeper 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-zookeeper-curator</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 Etcd 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency> ``` ## 规则配置 以下示例将 ZooKeeper 作为配置中心和注册中心。 ```java // 省略配置数据源以及规则 // ... // 配置配置/注册中心 GovernanceCenterConfiguration configuration = new GovernanceCenterConfiguration("Zookeeper", "localhost:2181", new Properties()); // 配置治理 Map<String, CenterConfiguration> configurationMap = new HashMap<String, CenterConfiguration>(); configurationMap.put("governance-shardingsphere-data-source", configuration); // 创建 GovernanceShardingSphereDataSource DataSource dataSource = GovernanceShardingSphereDataSourceFactory.createDataSource( createDataSourceMap(), createShardingRuleConfig(), new Properties(), new GovernanceConfiguration("shardingsphere-governance", configurationMap, true)); ``` ## 使用 GovernanceShardingSphereDataSource 通过 GovernanceShardingSphereDataSourceFactory 工厂创建的 GovernanceShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。 可通过 DataSource 选择使用原生 JDBC,或JPA, MyBatis 等 ORM 框架。 以原生 JDBC 使用方式为例: ```java DataSource dataSource = GovernanceShardingSphereDataSourceFactory.createDataSource( createDataSourceMap(), createShardingRuleConfig(), new Properties(), new GovernanceConfiguration("shardingsphere-governance", configurationMap, true)); String sql = "SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id WHERE o.user_id=? AND o.order_id=?"; try ( Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, 10); ps.setInt(2, 1000); try (ResultSet rs = preparedStatement.executeQuery()) { while(rs.next()) { // ... } } } ``` # 使用 YAML 配置 ## 引入 Maven 依赖 ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-governance</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 ZooKeeper 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-zookeeper-curator</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 Etcd 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency> ``` ## 规则配置 以下示例将 ZooKeeper 作为配置中心和注册中心。 ```yaml governance: name: governance_ds registryCenter: type: Zookeeper serverLists: localhost:2181 overwrite: true ``` ```java // 创建 GovernanceShardingSphereDataSource DataSource dataSource = YamlGovernanceShardingSphereDataSourceFactory.createDataSource(yamlFile); ``` ## 使用 GovernanceShardingSphereDataSource 通过 YamlGovernanceShardingSphereDataSourceFactory 工厂创建的 GovernanceShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。 可通过 DataSource 选择使用原生 JDBC,或JPA, MyBatis 等 ORM 框架。 以原生 JDBC 使用方式为例: ```java DataSource dataSource = YamlGovernanceShardingSphereDataSourceFactory.createDataSource(yamlFile); String sql = "SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id WHERE o.user_id=? AND o.order_id=?"; try ( Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, 10); ps.setInt(2, 1000); try (ResultSet rs = preparedStatement.executeQuery()) { while(rs.next()) { // ... } } } ``` # 使用 SPRING BOOT STARTER ## 引入 Maven 依赖 ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-governance-spring-boot-starter</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 ZooKeeper 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-zookeeper-curator</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 Etcd 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency> ``` ## 规则配置 ```properties spring.shardingsphere.governance.name=governance-spring-boot-shardingsphere-test spring.shardingsphere.governance.registry-center.type=Zookeeper spring.shardingsphere.governance.registry-center.server-lists=localhost:2181 spring.shardingsphere.governance.additional-config-center.type=Zookeeper spring.shardingsphere.governance.additional-config-center.server-lists=localhost:2182 spring.shardingsphere.governance.overwrite=true ``` ## 在 Spring 中使用 GovernanceShardingSphereDataSource 直接通过注入的方式即可使用 GovernanceShardingSphereDataSource;或者将 GovernanceShardingSphereDataSource 配置在JPA, MyBatis 等 ORM 框架中配合使用。 ```java @Resource private DataSource dataSource; ``` # 使用 SPRING 命名空间 ## 引入Maven依赖 ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-governance-spring-namespace</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 ZooKeeper 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-zookeeper-curator</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 Etcd 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-repository-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency> ``` ## 规则配置 ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:governance="http://shardingsphere.apache.org/schema/shardingsphere/governance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://shardingsphere.apache.org/schema/shardingsphere/governance http://shardingsphere.apache.org/schema/shardingsphere/governance/governance.xsd"> <util:properties id="instance-properties"> <prop key="max-retries">3</prop> <prop key="operation-timeout-milliseconds">3000</prop> </util:properties> <governance:reg-center id="regCenter" type="Zookeeper" server-lists="localhost:2181" /> <governance:config-center id="configCenter" type="ZooKeeper" server-lists="localhost:2182" /> <governance:data-source id="shardingDatabasesTablesDataSource" data-source-names="demo_ds_0, demo_ds_1" reg-center-ref="regCenter" config-center-ref="configCenter" rule-refs="shardingRule" overwrite="true" /> <governance:data-source id="replicaQueryDataSource" data-source-names="demo_primary_ds, demo_replica_ds_0, demo_replica_ds_1" reg-center-ref="regCenter" config-center-ref="configCenter" rule-refs="replicaQueryRule" overwrite="true" /> <governance:data-source id="encryptDataSource" data-source-names="demo_ds" reg-center-ref="regCenter" config-center-ref="configCenter" rule-refs="encryptRule" overwrite="true" > <props> <prop key="query-with-cipher-column">true</prop> </props> </governance:data-source> </beans> ``` ## 在 Spring 中使用 GovernanceShardingSphereDataSource 直接通过注入的方式即可使用 GovernanceShardingSphereDataSource;或者将 GovernanceShardingSphereDataSource 配置在JPA, MyBatis 等 ORM 框架中配合使用。 ```java @Resource private DataSource dataSource; ```
原创文章,需联系作者,授权转载
上一篇:UE Design | 从爆款打造谈如何驱动用户转化?【中】
下一篇:CentOS系统启动hung死处理
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号