cobarclient 要解決什么問題丈甸?
互聯(lián)網(wǎng)架構中很多情況下使用的是spring+ibatis的架構臀玄,實際中使用spring提供的模板sqlmapClientTemplate來進行數(shù)據(jù)庫的CRUD操作图焰,嗤练,隨著互聯(lián)網(wǎng)企業(yè)越來越多的數(shù)據(jù),在數(shù)據(jù)庫容量規(guī)劃設計的時候會考慮按照業(yè)務來進行垂直拆分數(shù)據(jù)庫玉锌,或者水平來拆分表,主要是考慮到了數(shù)據(jù)庫容量規(guī)劃和IO性能等慌随,那么問題來了芬沉, sqlmapClientTemplate只能處理單數(shù)據(jù)源的問題躺同,對于多數(shù)據(jù)源無能為力阁猜,于是alibaba就搞出來這么一個玩意,主要為了實現(xiàn)
1.多數(shù)據(jù)源之間路由查找
2.多數(shù)據(jù)源事務管理
基本原理是什么蹋艺?
corbarclient 2.2版本使用的模板是MysdalSqlMapClientTemplate剃袍, 繼承了sqlmapClientTemplate,只是簡單的對sqlmapClientTemplate的功能進行增強捎谨,他內(nèi)部為每一個數(shù)據(jù)源新建一個對應的sqlmapClientTemplate民效,并且持有一個路由Router來根據(jù)sqlmapId、shardingExpression來決定使用哪個shard
事務管理
cobarclient為了考慮性能涛救,并沒有采取XA事務的兩段式提交畏邢,它使用的是一段式提交(Best efforts 1pc pattern)