技术简介

  • 独立部署的服务端
  • 功能与ShardingJDBC一样,提供分库分表能力
  • 目前只支持MySQL和PostgreSQL
  • 提供统一的数据库代理服务

部署使用

  • 官网下载 发布包apache-shardingsphere-4.1.1-sharding-proxy-bin.tar.gz,并解压

https://archive.apache.org/dist/shardingsphere/4.1.1/

  • 手动复制 mysql-connector-java-8.0.20.jar 驱动包到 lib目录下,因为默认带的是PGSQL驱动包
  • 修改 conf/server.yaml,配置认证信息和代理基础配置
  • 修改 config-sharding.yaml,关于分库分表的配置主要就在此配置文件中
  • 其分库分表配置与ShardingJDBC思路和逻辑基本一致
  • 需要注意:lib目录下的jar包有些可能因为名称过长,.jar后缀丢弃掉,需自己手动改下
  • 启动:linux start.sh stop.sh,windows,start.bat,windows关闭命令行窗口即停止服务
  • 默认端口3307,可通过 start.bat 3317 设置端口
  • 连接使用,可类似标准MySQL服务一样,连接Proxy服务
  • Proxy还提供了服务治理配置功能,可将其注册到zk中
  • 对于服务治理,目前其弹性伸缩、快速扩缩容机制处于Alpha测试阶段
  • 另一方面利用注册中心,集中管理分库分表配置,目前支持zk、etcd
  • 也可通过SPI扩展接口,快速接入NACOS、Apollo等

其他功能

  • 影子库:一般用于压测,给关键数据库配置一个影子库,压测数据全部写入影子库中,而不影响生产环境数据
  • 数据加密:默认集成了AES对称加密与MD5非对称,也可通过SPI自行扩展

总结

  • SPI机制JDBC中体现不够,但在Proxy中的作用非常大
  • 很多自定义扩展,只需按SPI机制要求打成jar包,丢到lib目录下,然后配置即可使用
  • 无论是ShardingJDBC还是Proxy,都是解决数据库容量问题
  • 其实引入了这些技术后,对业务侵入性还是挺大,且有很多局限性
  • 另外运维管理难度也会增加不少

其他相关产品了解

  • DBLE,专注MySQL,基于Mycat而来
  • Atlas,360、美团有团队用,目前逐步下架
  • Cobar,阿里内部内用,开源版本基本不推荐使用
  • MyCAT,老品牌了,有不少企业在用,基于Cobar而来
  • Kingshard,GO语言开发
  • Zebra,MTDDL,美团点评搞了不少
  • Vitess,谷歌,youtube,Youtube 大量应用
  • DRDS,阿里商业化服务,自研中间件
06-18 19:55