ShardingSphere Proxy 5.x 实现 自定义分片策略
在ShardingProxy 5.x版本和之前4.x版本的自定义分片策略写法不一样了,4.x的网上还能找到例子,但是5.x的我找了很久 也没有比较详细的例子,花了半天搞了一下 写出来给大家看看
第一步 官网下载sharding proxy最新版本5.0.0Beta
下载自己找去哈 直接baidu shardingsphere进去官网下载 里面有 找到5.0的proxy
修改两个配置文件如下
1.2. server.yaml
authentication 是虚拟数据库的账号密码 端口是3307(不是3306哈) ws_share是虚拟数据库名称
props 自行配置
2.config-sharding.yaml
userss是数据库表名称前缀 数据库的真实结构是ws_share1 库和ws_share2 库 每个库中5个表
userss_0 -> userss_4
schemaName 虚拟数据库名称 跟server配置里的一致
dataSources 数据源 有几个配置几个
rules 唯一的重点就是shardingAlogorithms处 的userss_inline 本来是要写表达式的 但是我们要自定义对吧 可以看到我之前注释的表达式 type修改为自定义的type值(HIM_USER)这个值是自定义的下面会见到 proxy就是根据这个type找到我们写的class
数据库的配置 我没改哈 跟表的一样只需要改下 type值就好了 自定义里我大概写了下
还有一步就是把proxy项目lib中shardingsphere开头的jar包拷贝出来(因为4.0的包里面没有我们需要的类 5.0的包maven库我没找到) 一会自己新建的项目需要用到 可能不需要这么多 但是懒得找了 就都拷贝出来吧
第二步 新建自己的java项目 实现自定义分片
引入第一步 从proxy拷贝出来的jar包
新建一个类 实现一下接口StandardShardingAlgorithm
第一张图就是精确分片了 记录的插入 还有 精确的查询 比如= 或者 in 都会进入这个方法
这里表我是根据id % 5 分的 库根据id % 2 分的 跟之前的配置联系起来看就明白了
没啥好讲的代码很简单
写完代码还有一步 就是
在resources 下新建META-INF/services 再在里面新建一个名为org.apache.shardingsphere.sharding.spi.ShardingAlgorithm的文件 文件内容就是自定义类的全限定名我的这个就是 com.NewHimShardingAlgorithm(只需要有这些就够了)
然后打成jar包
第三步 启动查看
将打好的自定义jar包 放入proxy的lib目录下 启动proxy 然后用Navicat或者啥连接proxy虚拟的数据库 连接信息 你的proxy在哪里启动的ip就是啥(连接信息不是真实的ip哈 是proxy所在的服务器的ip) 端口是3307 账号密码 看server配置文件
这里有个问题 navicat的话 连接虚拟数据库 高版本的貌似不行 12.0左右的navicat才可以 高版本的要么打不开 要么看到的库不对