shardingsphere


shardingsphere( https://github.com/apache/shardingsphere)是一套開源的分布式數據中間件,可以在JDBC層, Proxy層進行SQL路由。 可以完成數據庫讀寫分離, 數據分片等。 
數據庫庫中間件一般會在兩個地方:
1. 項目的JDBC層:對項目浸入較小,但是要有對應的SDK, 如果公司項目語言比較多,就需要開發對應的SDK。 因為直通數據庫層,所以性能損失小。 
2. Proxy:獨立部署,對項目完全沒有影響,只需要把項目中的DB URL, 改為proxy地址即可,跨語言,但是相比之前要多一次序列化,所以對性能有些損耗,而且Proxy需要做高可用, 部署上會有一些復雜。 
shardingsphere對上面兩項都支持。作為一個數據庫中間件,核心就是SQL路由,同時要考慮的問題其實也很多。 
1. 對於JDBC層的中間件,如何對項目低侵入。
2. SQL解析的性能。 
3. 批量SQL
4. 如果沒有命中分片,如何處理? 結果合並。 
5. 事務。 
上面的一些問題在shardingsphere中都有體現,具體可以參考源碼。 
 
 
這里多說兩句:
1.  讀寫分離並不能完全按照sql語句的類型進行分離,因為主從數據庫之間會有延遲,所以還要有預留擴展可以人為指定路由到哪個數據庫。 
2. 為了解決單表數據量大和訪問壓力的問題,我們將數據改為分表分庫模式, 分表分庫的確可以解決當下的問題,但不是最終的銀彈,它也遺留了一些問題,比如當數據量再次達到單表閾值的時候, 我們就要再次擴展。  如果流量暴增,分表分庫也出現壓力的時候,並沒有很好的方式來快速解決問題。業務站點因為無狀態,所以很容易做擴展 ,但是數據庫上存儲數據,並不能很好擴展,而且即使有遷移方案,因為數據量大,遷移速度也並不快。 目前在找一種方案,能夠對數據做平滑擴展,能夠對數據做rebalance, 目前正在研究TiDB。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM