侧边栏壁纸
博主头像
码森林博主等级

一起走进码森林,享受编程的乐趣,发现科技的魅力,创造智能的未来!

  • 累计撰写 145 篇文章
  • 累计创建 73 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

ShardingSphere4.1.1 | Sharding-UI部署和使用

码森林
2022-11-15 / 0 评论 / 0 点赞 / 359 阅读 / 1,238 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-11-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

简介

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

官网配置参考:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/features/orchestration/config-center/

4、认证信息配置

 users:
    root:
      password: root
    sharding:
      password: sharding
      authorizedSchemas: sharding_db

5、属性配置

sql.show: true

6、数据扩容

需要配合Sharding-Scaling使用,后续再补充~

0

评论区