简介
Sharding-UI是ShardingSphere的一个简单而有用的web管理控制台。它用于帮助用户更简单的使用ShardingSphere的相关功能,目前提供注册中心管理、动态配置管理、数据库编排等功能。
项目结构上采取了前后端分离的方式,前端使用Vue框架,后端采用Spring Boot框架。使用标准的Maven方式进行打包,部署,同时也可以采用前后端分离的方式本地运行,方便开发调试。
安装部署
官放安装部署方式:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-ui/usage/build/
由于习惯了 Docker 这种快速部署又可以轻松启动停止移除的爽,本文使用使用 Dockerfile 构建镜像,并部署启动。
Docker 相关教程从这里开始:https://www.zwqh.top/article/info/77
Dockerfile
# 设置基准镜像
FROM java:8
# 设置描述
MAINTAINER zwqh.top
# 环境变量
ENV SHARDING_VERSION=4.1.1
ENV SHARDING_UI=apache-shardingsphere-$SHARDING_VERSION-shardingsphere-ui-bin
ENV SHARDING_PORT=8088
ENV SHA512_VAL=17ab2089d1ddd00f13ea270b996fbf447aa16b5408ef1e5cbca56eeb1828e06a841fad54d78417278db6e876c0c65fa23d86dcbed5c1e3fd2796d4747b4bac4b
ENV SHARDING_HOME=/opt/shardingsphere-ui
# 下载
RUN curl "https://archive.apache.org/dist/shardingsphere/shardingsphere-ui-$SHARDING_VERSION/$SHARDING_UI.tar.gz" -o $SHARDING_UI.tar.gz
# 验证
RUN if [ "$SHA512_VAL" != "$(sha512sum $SHARDING_UI.tar.gz | awk '{print($1)}')" ];\
then \
echo "sha512 values doesn't match! exiting." && \
exit 1; \
fi;
# 文件解压、链接、授权等
RUN tar xzf $SHARDING_UI.tar.gz -C /opt && \
ln -s /opt/$SHARDING_UI $SHARDING_HOME && \
useradd -r -M -d $SHARDING_HOME sharding && \
chown -R sharding:sharding /opt/$SHARDING_UI && \
chown -h sharding:sharding $SHARDING_HOME
USER sharding
WORKDIR $SHARDING_HOME
# 容器启动时运行
ENTRYPOINT $SHARDING_HOME/bin/start.sh $SHARDING_PORT && tail -f $SHARDING_HOME/logs/stdout.log
构建镜像
docker build -t zwqh.top/shardingsphere-ui:1.0 /Users/charlie/docker/docker-sharding-ui
创建并启动容器
docker run -d --name shardingsphere-ui-8088 -p 8088:8088 zwqh.top/shardingsphere-ui:1.0
浏览器查看效果
输入http://localhost:8088/#/login
OK,简单部署完成~
配置和使用
使用默认账户 admin 和密码 admin 登录。
1、注册中心配置
首先需要添加并激活注册中心。可以添加多个注册中心,但只能有一个处于激活状态,后面的运行状态功能都是针对当前已激活的注册中心进行操作。 目前提供Zookeeper的支持,后续会添加第三方注册中心的支持。
2、运行状态
- 添加激活注册中心后,可以查看当前注册中心所有运行实例信息。
- 可以通过操作按钮对运行实例进行熔断与恢复操作。
- 可以查看所有从库信息,并进行从库禁用与恢复操作。
3、配置中心
首先需要添加并激活配置中心。可以添加多个配置中心,但只能有一个处于激活状态,后面的规则配置功能是针对当前已激活的配置中心进行操作。 目前提供Zookeeper的支持,后续会添加第三方配置中心的支持。
- 添加激活配置中心后,可以获取当前配置中心中所有数据源的相关配置,包括数据分片,读写分离、Properties配置等。
- 可以通过YAML格式对相关配置信息进行修改。
- 点击 + 按钮可以添加新的数据源和分片规则。
4、数据源和分片规则配置
数据源配置示例
ds0: !!org.apache.shardingsphere.orchestration.core.configuration.YamlDataSourceConfiguration
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
properties:
password: '123456'
dataSourceJNDI: null
transactionIsolation: null
connectionTestQuery: null
driverClassName: com.mysql.jdbc.Driver
initializationFailTimeout: 1
jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0
minimumIdle: 10
maxLifetime: 1800000
schema: null
maximumPoolSize: 10
validationTimeout: 5000
dataSourceClassName: null
connectionTimeout: 30000
idleTimeout: 600000
exceptionOverrideClassName: null
leakDetectionThreshold: 0
connectionInitSql: null
poolName: HikariPool-1
catalog: null
username: root
ds1: !!org.apache.shardingsphere.orchestration.core.configuration.YamlDataSourceConfiguration
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
properties:
password: '123456'
dataSourceJNDI: null
transactionIsolation: null
connectionTestQuery: null
driverClassName: com.mysql.jdbc.Driver
initializationFailTimeout: 1
jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1
minimumIdle: 10
maxLifetime: 1800000
schema: null
maximumPoolSize: 10
validationTimeout: 5000
dataSourceClassName: null
connectionTimeout: 30000
idleTimeout: 600000
exceptionOverrideClassName: null
leakDetectionThreshold: 0
connectionInitSql: null
poolName: HikariPool-2
catalog: null
username: root
数据分片配置示例
bindingTables:
- t_order
- t_order_item
broadcastTables:
- t_address
defaultDataSourceName: ds0
defaultDatabaseStrategy:
inline:
algorithmExpression: ds$->{user_id % 2}
shardingColumn: user_id
tables:
t_order:
actualDataNodes: ds$->{0..1}.t_order_$->{0..1}
keyGenerator:
column: order_id
props:
worker.id: '123'
type: SNOWFLAKE
logicTable: t_order
tableStrategy:
inline:
algorithmExpression: t_order_$->{order_id % 2}
shardingColumn: order_id
t_order_item:
actualDataNodes: ds$->{0..1}.t_order_item_$->{0..1}
keyGenerator:
column: order_item_id
props:
worker.id: '123'
type: SNOWFLAKE
logicTable: t_order_item
tableStrategy:
inline:
algorithmExpression: t_order_item_$->{order_id % 2}
shardingColumn: order_id
masterSlaveRules: {}
读写分离配置
name: ds_ms
masterDataSourceName: ds_master
slaveDataSourceNames:
- ds_slave0
- ds_slave1
loadBalanceAlgorithmType: ROUND_ROBIN
4、认证信息配置
users:
root:
password: root
sharding:
password: sharding
authorizedSchemas: sharding_db
5、属性配置
sql.show: true
6、数据扩容
需要配合Sharding-Scaling使用,后续再补充~
评论区