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才可以 高版本的要麼打不開 要麼看到的庫不對