在工作上使用ssdb 作為產品的storage DB,但是因為目前沒有支援sharding 分片式處理
所以用Go開發了一個sharding proxy,並且避開使用index db處理,相對的處理時間會有可能比index db 模式來得長
設計思維:
將每個ssdb instance 當作一個區塊(node)看待
實作功能:
- 完全遵守ssdb protocol 資料協定,所以在使用上不需修改client code
- 新增node 只需要將node資訊寫入設定檔,不需重新啟動proxy service
- 目前確認已測試完成的指令請參考 github readme
資料處理:
- 寫入資料:寫入資料會優先寫入到第一個node,這樣在熱查詢的時候會加快找到資料的速度
- 取得單一資料(get,hget):會優先讀取第一個node,如果找不到則遍尋所有的node,直到找到資料,如果都找不到則回應not_found
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixQ6QVhK5c8SL4A_T-T5_3rYVRunyl9xqHAwzavdpN7wV3T1lB3zmMMKSk5M7hPCWsO40Y1Y2TlDkVCdmGJb_wL3Nk0X7ENzArM7vc9yJG0SXeR71HujFts-SO7kdxKJzSnqv-0cdNW3J7/s320/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2015-09-18+%25E4%25B8%258B%25E5%258D%25882.16.17.png)
- 取得列表資料(keys,scan,hgetall...etc):
會掃描全部的node後在合併全部資料,合併資料時,資料優先順序為先查詢到則後面有查詢到重複資料也不會覆蓋目前資料,確保資料的最新狀態不會被舊資料給取代
source code: https://github.com/matishsiao/ssdbproxy