ShardingShpere分库分表4-ShardingProxy分库分表实战及同类产品选型对比
发布日期:2021-04-30 21:02:52 浏览次数:97 分类:精选文章

本文共 3224 字,大约阅读时间需要 10 分钟。

ShardingSphere技术文档

一、ShardingProxy快速使用

ShardingProxy是一款功能强大的数据库代理工具,主要用于分库分表。与传统的ShardingJDBC不同,ShardingProxy是一个独立部署的服务端代理,支持MySQL和PostgreSQL数据库。以下是ShardingProxy的快速使用指南。

1. ShardingProxy部署

在Windows或Linux上部署ShardingProxy相对简单。我们可以从ShardingSphere官网下载4.1.1版本的ShardingProxy发布包,并按照以下步骤进行配置:

  • 解压发布包到本地目录,确保路径不含中文字符。
  • 将MySQL JDBC驱动包mysql-connector-java-8.0.20.jar手动复制到ShardingProxy的lib目录下。
  • 打开server.yaml配置文件中的注释,修改authenticationprops部分。
  • config-sharding.yaml中添加数据库配置,根据实际环境设置数据源信息。
  • 修改config-shadow.yamlconfig-encrypt.yaml以支持影子库和数据加密功能。
  • 打缝补丁修复Jar文件名称被截断的问题。
  • 启动ShardingProxy时,可以指定一个定制端口(如3316),避免与其他MySQL服务端口冲突。运行start.bat 3316启动服务。

    2. ShardingProxy使用

    使用ShardingProxy时,仅需使用MySQL JDBC客户端连接到默认端口(如3316),行为与连接本地MySQL服务一致。以下是常见操作示例:

    mysql.exe -P3316 -uroot -p

    连接成功后,可以通过以下命令查看数据库和表信息:

    show databases;use sharding_db;show tables;select * from course;

    3. ShardingProxy服务治理

    ShardingProxy支持丰富的服务治理功能,主要包括数据接入、弹性伸缩和注册中心集成。以下是配置示例:

    orchestration:  orchestration_ds:    orchestrationType: registry_center    instanceType: zookeeper    serverLists: localhost:2181    namespace: orchestration    props:      overwrite: false      retryIntervalMilliseconds: 500      timeToLiveSeconds: 60      maxRetries: 3      operationTimeoutMilliseconds: 500

    此外,ShardingSphere还提供了ShardingSphere-UI管理控制台,用于注册中心管理和数据库编排等功能。

    4. ShardingProxy扩展功能

    4.1 影子库

    配置影子库用于压力测试,具体操作如下:

  • config-shadow.yaml中设置影子规则:
    shadowRule:  column: shadow  shadowMappings:    ds: shadow_ds
  • 启动ShardingProxy后,通过默认数据库配置访问影子库进行测试。
  • 4.2 数据加密

    数据加密配置在config-encrypt.yaml中完成,支持AES和MD5等加密算法。默认集成加密功能,可通过SPI扩展接入更多算法。

    4.3 SPI扩展

    ShardingProxy支持SPI扩展,用户可通过开发自定义插件实现主键生成、分区策略等功能。以下是SPI扩展示例:

    package com.roy.shardingDemo.spiextention;import org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.Properties;import java.util.concurrent.atomic.AtomicLong;public class MykeyGenerator implements ShardingKeyGenerator {    private AtomicLong atom = new AtomicLong(0);    private Properties properties = new Properties();    public Comparable
    generateKey() { String prefix = properties.getProperty("mykey-offset", "100"); LocalDateTime ldt = LocalDateTime.now(); String timestampS = DateTimeFormatter.ofPattern("HHmmssSSS").format(ldt); return Long.parseLong("" + prefix + timestampS + atom.incrementAndGet()); } public String getType() { return "MYKEY"; } public Properties getProperties() { return this.properties; } public void setProperties(Properties properties) { this.properties = properties; }}

    将上述类和SPI服务文件注册到ShardingProxy后,可以在config-sharding.yaml中配置自定义主键生成策略。

    5. 与其他数据库中间件对比

    以下是ShardingProxy与其他主流数据库中间件的对比:

    产品名称 开发公司 功能特性 备注
    DBLE 爱可生 专注于MySQL的高可扩展性分布式中间件 基于MyCAT开发的增强版。
    Meituan Atlas 美团 读写分离、单库分表 已下架。
    Cobar 阿里(B2B) Cobar以Proxy形式位于前台应用和实际数据库之间 开源版本仅支持MySQL,不支持读写分离。
    MyCAT 阿里 实现MySQL协议代理,支持多数据库通信 基于Cobar研发。
    Atlas 360 读写分离、静态分表 功能齐全,但接入复杂。
    Kingshard - Go语言开发的高性能MySQL Proxy 性能优异。
    TDDL 阿里 动态数据源、读写分离、分库分表 提供两种版本。
    Zebra 美团点评 动态数据源、读写分离、分库分表、CAT监控 功能齐全但限制较多。
    MTDDL 美团点评 动态数据源、读写分离、分布式唯一主键生成器 功能全面。
    Vitess 谷歌 基于ZooKeeper的集群管理,支持复杂查询 主要应用于YouTube。
    DRDS 阿里 专注于解决单机关系型数据库扩展性问题 无需状态,灵活高效。

    ShardingProxy在功能上与这些中间件有所不同,但其独特之处在于支持广泛的SPI扩展和服务治理功能。

    上一篇:linux安装expect
    下一篇:String类的API

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2026年06月09日 18时59分08秒