技术简介
- 独立部署的服务端
- 功能与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,阿里商业化服务,自研中间件