简介
在上篇文章中,体验了ShardingSphere JDBC的数据分片、读写分离、数据加密,本篇文章就来探索下ShardingSphere Proxy相关的功能
示例运行
ShardingSphere Proxy相对来说还是比较陌上的,首先肯定是官方文档了解一波:
数据分片、读写分离、数据加密的说明和配置和ShardingSphere JDBC一样,参考上篇文章即可
ShardingSphere JDBC如果要接入的话,从上篇文章中可以看出,其是需要改变现有业务代码的,是侵入式的
ShardingSphere Proxy感觉更像一个代码,只需要改变数据库的连接配置,是非侵入式的。但也增加了整个系统的复杂度,各有利弊吧
ShardingSphere Proxy启动相关
首先找到启动的地方:shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/Bootstrap.java
上面就是启动类,但还不能进行启动,需要先将server.yaml进行开启:shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/server.yaml
下面的注释全部放开:
其中配置了ShardingSphere连接是用户名和密码,下面的配置文件中就配置了两个:root和sharding
sql-show改为true,看日志利于排查问题(一个示例跑起来问题真不少啊)
rules:
- !AUTHORITY
users:
- root@%:root
- sharding@:sharding
provider:
type: NATIVE
props:
max-connections-size-per-query: 1
executor-size: 16 # Infinite by default.
proxy-frontend-flush-threshold: 128 # The default value is 128.
# LOCAL: Proxy will run with LOCAL transaction.
# XA: Proxy will run with XA transaction.
# BASE: Proxy will run with B.A.S.E transaction.
proxy-transaction-type: LOCAL
xa-transaction-manager-type: Atomikos
proxy-opentracing-enabled: false
proxy-hint-enabled: false
sql-show: true
check-table-metadata-enabled: false
lock-wait-timeout-milliseconds: 50000 # The maximum time to wait for a lock
show-process-list-enabled: false
# Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
# The default value is -1, which means set the minimum value for different JDBC drivers.
proxy-backend-query-fetch-size: -1
check-duplicate-table-enabled: fals
相关的配置文件位于:shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf
下面有各个示例开启的配置文件,先不进行开启,跟着下面的步骤进行操作即可
使用docker启动一个数据库:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
注:本地采用单个测试,所以在测试一个特性的时候,其他特性的配置文件是注释掉的
注:连接ShardingSphere Proxy时,数据库名称是Proxy的逻辑名称:schemaName,注意进行相应的修改
数据分片
1.数据库初始化
用下面的语句建立相关的数据库
CREATE SCHEMA IF NOT EXISTS demo_ds_0;
CREATE SCHEMA IF NOT EXISTS demo_ds_1;
2.ShardingSphere Proxy配置
放开配置:shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-sharding.yaml
就是简单修改密码,大致配置如下:
schemaName: sharding_db
dataSources:
ds_0:
url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
ds_1: