TinyDBCluster Vs routing4db
routing4db的作者是@CodeFurtur,主頁詳見:https://code.google.com/p/routing4db/?閱讀了routing4db的源碼,當然理解上與作者還是有差距的,如果有錯誤之處,歡迎指正。?
底層實現(xiàn)差異?? 實現(xiàn)層次?TinyDBCluster選擇在Jdbc Driver層實現(xiàn),因此不依賴各種Spring等框架;routing4db選擇在應(yīng)用層解決,對datasource進行封裝,因此,需要依賴Spring框架。?
TinyDBCluster對于開發(fā)人員來說,可以做到完全透明;在特殊場景下routing4db,則需要開發(fā)人員遵守一定要求。
適用場景?TinyDBCluster可以適應(yīng)于任何應(yīng)用場景,甚至可以用第三方工具只要指定驅(qū)動driver,就可以使用。?
routing4db只適應(yīng)于上層應(yīng)用,第三方工具無法使用。?
第三方框架支持?TinyDBCluster支持所有第三方框架。?
routing4db對于Mybatis等基于工廠方式創(chuàng)建DAO的方式,需要進行增強。
路由處理?
TinyDBCluster采用SQL解析方式進行路由,routing4db采用正則表達式進行方法路由;當然,相對來說SQL解析方式效率比正則要慢一些的,但是由于TinyDBCluster內(nèi)部采用了緩沖方式,同樣的SQL語句不會解析第二次,因此效率也不會存在問題。?
routing4db的正則表達式方法路由,對于開發(fā)人員是有要求的,即必須遵從方法名規(guī)范。?
| 1 2 3 4 5 6 | <property name="readMethodPatterns"> ? ? <list>?? ? ?? ???<value>*get*</value> ? ?? ???<value>*find*</value> ? ? </list> < /property> |
錯誤檢測?TinyDBCluster只要是檢測到數(shù)據(jù)庫有錯誤,在進行負載的時候,會把失效的去掉。保證只要有可用的,就不會出現(xiàn)訪問錯誤。?
routing4db中沒有看到相關(guān)處理邏輯。
讀寫分離差異 ??
數(shù)據(jù)同步?數(shù)據(jù)庫同步,TinyDBCluster支持框架同步和數(shù)據(jù)庫同步兩種模式,當然框架同步是以降低數(shù)據(jù)庫處理能力來達到的,適合于寫少讀多的場景。?
routing4db只支持數(shù)據(jù)庫同步模式。?
路由算法?TinyDBCluster的路由規(guī)則是如果事務(wù)及或?qū)懼噶顒t在寫庫進行,如果是無事務(wù)讀指令則在讀庫進行。雖然加重了寫庫的負擔,但是可以保證數(shù)據(jù)邏輯是永遠正確的。?
routing4db則是讀指令在讀庫,寫指令在寫庫。如果采用數(shù)據(jù)庫同步的方案中,同步是有延遲的,此時可能有邏輯錯誤。?
路由權(quán)重?TinyDBCluster支持設(shè)定不同的權(quán)限,從而根據(jù)機器配置情況調(diào)整負載能力。?
routing4db只是簡單平均分配,機器配置情況相同的情況也沒有問題,如果機器配置不同的情況下,會出現(xiàn)別的處理能力有盈余,而有的處理能力則不足的情況。
路由策略?TinyDBCluster和routing4db都是接口,因此都可以進行自定義擴展。?
分表方面?兩者都支持分表處理,都支持事務(wù)一致性。不同之處在于??TinyDBCluster內(nèi)部集成JTOM實現(xiàn)事務(wù)一致,routing4db采用Spring實現(xiàn)事務(wù)一致。但是最終的目標是一致的。?
集群部署方面?routing4db支持的部署方式,TinyDBCluster都支持。
TinyDBCluster支持分區(qū)和分表混用的方式。即讀寫分離及數(shù)據(jù)表水平擴展方面混合使用。?
routing4db中沒有看到類似樣例,不確定是否支持。?
總結(jié)?routing4db是國人實現(xiàn)的數(shù)據(jù)庫讀寫分離及水平分表方面的一個良好實踐,TinyDBCluster在實現(xiàn)過程中,對于routing4db支持的部署方式等方面進行了參考,學習到了相當多的內(nèi)容,另外作者的代實現(xiàn)也表現(xiàn)了相當高的水準,值得大家學習與研究。?
TinyDBCluster有一定的后發(fā)優(yōu)勢,另外由于在實現(xiàn)層次上的差異,確實提供了比routing4db更多的功能特性,對于開發(fā)人員也更友好。
轉(zhuǎn)載于:https://www.cnblogs.com/j2eetop/p/4612434.html
總結(jié)
以上是生活随笔為你收集整理的TinyDBCluster Vs routing4db的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#编写Windows服务程序图文教程
- 下一篇: 关于中值滤波算法,以及C语言实现(转)