简介
Sharding-Proxy是ShardingSphere的第二个产品。 它定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL/PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat等)操作数据,对DBA更加友好。
- 向应用程序完全透明,可直接当做MySQL/PostgreSQL使用。
- 适用于任何兼容MySQL/PostgreSQL协议的的客户端。
Sharding-Proxy 的架构图:
对比
Sharding-JDBC | Sharding-Proxy | Sharding-Sidecar | |
---|---|---|---|
数据库 | 任意 | MySQL/PostgreSQL |
MySQL/PostgreSQL |
连接消耗数 | 高 | 低 |
高 |
异构语言 | 仅Java | 任意 |
任意 |
性能 | 损耗低 | 损耗略高 |
损耗低 |
无中心化 | 是 | 否 |
是 |
静态入口 | 无 | 有 |
无 |
Sharding-Proxy的优势在于对异构语言的支持,以及为DBA提供可操作入口。
使用
配置
配置方式请参考官网配置手册
注册中心
若想使用Sharding-Proxy的数据库治理功能,则需要使用注册中心实现实例熔断和从库禁用功能。详情请参考支持的注册中心。
Zookeeper
Sharding-Proxy默认提供了Zookeeper的注册中心解决方案。您只需按照配置规则进行注册中心的配置,即可使用。
其他第三方注册中心
- 将Sharding-Proxy的lib目录下的
sharding-orchestration-reg-zookeeper-curator-${sharding-sphere.version}.jar
文件删除。 - 使用SPI方式实现相关逻辑编码,并将生成的jar包放到Sharding-Proxy的lib目录下。
按照配置规则进行注册中心的配置,即可使用。
分布式事务
Sharding-Proxy接入的分布式事务API同Sharding-JDBC保持一致,支持LOCAL,XA,BASE类型的事务。
XA事务
Sharding-Proxy原生支持XA事务,默认的事务管理器为Atomikos。 可以通过在Sharding-Proxy的conf目录中添加
jta.properties
来定制化Atomikos配置项。 具体的配置规则请参考Atomikos的官方文档。BASE事务
BASE目前没有打包到Sharding-Proxy中,使用时需要将实现了
ShardingTransactionManager
SPI的jar拷贝至conf/lib目录,然后切换事务类型为BASE。SCTL (Sharding-Proxy control language)
SCTL为Sharding-Proxy特有的控制语句,可以在运行时修改和查询Sharding-Proxy的状态,目前支持的语法:
Sharding-Proxy 默认不支持hint,如需支持,请在conf/server.yaml中,将props的属性proxy.hint.enabled设置为true。在Sharding-Proxy中,HintShardingAlgorithm的泛型只能是String类型。注意事项
Sharding-Proxy默认使用3307端口,可以通过启动脚本追加参数作为启动端口号。如:
bin/start.sh 3308
- Sharding-Proxy使用conf/server.yaml配置注册中心、认证信息以及公用属性。
- Sharding-Proxy支持多逻辑数据源,每个以config-前缀命名的yaml配置文件,即为一个逻辑数据源。
[
](https://shardingsphere.apache.org/document/current/cn/manual/sharding-proxy/)