分佈式 | MyCat如何遷移到DBLE之分片算法對比解析:enum分片

原創做者: 鍾悅算法


關於做者架構

鍾 悅  -  資深DBLE用戶運維

某宇宙行資深架構師,在大型重點項目中使用 DBLE。code

常年與 MySQL 糾纏不清,常常運用技術處理大企業病的技術or非技術問題的一個挨踢從業者。xml

 

根據用戶定義的枚舉值與分片節點映射文件,直接定位目標分片。中間件

  • 用戶在rule.xml中配置枚舉值文件路徑和分片索引是字符串仍是數字,DBLE在啓動時會將枚舉值文件加載到內存中,造成一個映射表blog

  • 在DBLE的運行過程當中,用戶訪問使用這個算法的表時,WHERE子句中的分片索引值會被提取出來,直接查映射表獲得分片編號索引

 

與MyCat的相似分片算法對比內存

中間件 DBLE MyCat
分片算法種類 enum 分區算法 分片枚舉

兩種中間件的枚舉分片算法使用上無差異。路由

 

開發注意點

【分片索引】1. 整型數字(能夠爲負數)或字符串((不含=和換行符)

【分片索引】2. 枚舉值之間不能重複

Male=0
Male=1

或者

123=1
123=2

會致使分片策略加載出錯

【分片索引】3. 不一樣枚舉值能夠映射到同一個分片上

Mr=0
Mrs=1
Miss=1
Ms=1
123=0

 

運維注意點

【擴容】1. 增長枚舉值無需數據再平衡

【擴容】2. 增長一個枚舉值的分片數量數時,須要對局部數據進行遷移

【縮容】1. 減小枚舉值須要數據再平衡

【縮容】2. 減小一個枚舉值的分片數量數時,須要對局部數據進行遷移

配置注意點

【配置項】1. 在 rule.xml 中,可配置項爲 <property name="defaultNode"><property name="mapFile"><property name="type">

【配置項】2. 在 rule.xml 中配置 <property name="defaultNode"> 標籤,非必須配置項,不配置該項的話,用戶的分片索引值沒落在 mapFile 定義的範圍時,DBLE 會報錯;若須要配置,必須爲非負整數,用戶的分片索引值沒落在 mapFile 定義的範圍時,DBLE 會路由至這個值的 MySQL 分片

【配置項】3. 在 rule.xml 中配置 <property name="mapFile"> 標籤,範圍映射文件的路徑:若在映射文件在 DBLE_HOME/conf 或其中,則可使用相對路徑的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 時,配置值就能夠簡寫爲 map/table_map.txt;映射文件在 DBLE_HOME/conf 目錄之外時,須要使用絕對路徑,但這種作法須要考慮用戶權限等問題,所以不建議把映射文件放在 DBLE_HOME/conf 外。

【配置項】4. 編輯 mapFile 所配置的文件

記錄格式爲:<枚舉值>=<分片編號>

枚舉值能夠是整型數字,或任意字符(除了=和換行符),分片編號必須是非負整型數字,記錄之間以換行分隔,一行僅能有一條記錄,枚舉值不可以是「DEFAULT_NODE」這個字符串,容許以「//」和「#」在行首來註釋該行

【配置項】5. 在 rule.xml 中配置 <property name="type"> 標籤;type 必須爲整型;取值爲 0 時,mapFile 的<枚舉值>必須爲整型;取值爲非 0 時,mapFile 的<枚舉值>能夠是任意字符(除了=和換行符)

相關文章
相關標籤/搜索