Zdal是支付寶自主研發(fā)的數(shù)據(jù)中間件產(chǎn)品,采用標(biāo)準(zhǔn)的JDBC規(guī)范,可以在分布式環(huán)境下看上去像傳統(tǒng)數(shù)據(jù)庫一樣提供海量數(shù)據(jù)服務(wù),是一種通用的分庫分表數(shù)據(jù)庫訪問框架,解決單庫單表數(shù)據(jù)庫訪問壓力,Zdal主要提供分庫分表,結(jié)果集合并,sql解析,數(shù)據(jù)庫failover動態(tài)切換等功能,提供互聯(lián)網(wǎng)金融行業(yè)的數(shù)據(jù)訪問層統(tǒng)一解決方案,目前已經(jīng)在支付寶的交易,支付,會員,金融等大部分關(guān)鍵應(yīng)用上使用,并且在2013年雙11大促中運行穩(wěn)定。
▲系統(tǒng)目標(biāo)
1.數(shù)據(jù)訪問路由,將針對數(shù)據(jù)的讀寫請求發(fā)送到最合適的地方。
2.數(shù)據(jù)存儲的自由擴(kuò)展,不再受限于單臺機器的容量瓶頸和速度瓶頸,平滑遷移。
3.使用zdal組件進(jìn)行數(shù)據(jù)庫的拆分,搭建分布式環(huán)境下的海量數(shù)據(jù)訪問平臺。
4.實現(xiàn)mysql,oracle,DB2數(shù)據(jù)庫訪問能力。
【系統(tǒng)架構(gòu)和領(lǐng)域模型】
▲系統(tǒng)整體架構(gòu)
zdal組件主要有5部分組成:
1. Zdal-client:開發(fā)編程接口,實現(xiàn)jdbc的Datasource,Connection,Statement,PreparedStatement,ResultSet等接口,實現(xiàn)通用的jdbc-sql訪問,內(nèi)部還實現(xiàn)讀庫重試,group數(shù)據(jù)源的選擇器,表名替換,sql執(zhí)行器等功能。
2. Zdal-parser:支持oracle/mysql/db2等數(shù)據(jù)庫的sql語句解析,并且緩存。根據(jù)規(guī)則引擎提供的參數(shù)列表,在指定的sql中查找到需要的參數(shù),然后返回拆分字段。
3. Zdal-rule:根據(jù)zdal-parser解析后的拆分字段值來確定邏輯庫和物理表名。
4. Zdal-datasource:數(shù)據(jù)庫連接的管理,支持mysql,oracle,db2數(shù)據(jù)庫的連接管理。
5. Zdal-common:zdal組件所使用的一些公共組件類。