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