京东金融中间件团队在分析了这些实现方式利弊后,根据自身业务特点实现了基于客户端的分库分表中间件CDS,即Completed Database Sharding。
CDS是一个基于客户端开发的分库分表中间件产品,实现了JDBC标准API,支持分库分表、读写分离和数据运维等诸多功能,提供高性能、高并发和高可靠的海量数据路由存取服务,业务系统可近乎零成本进行接入,目前支持MySQL、Oracle和SQL Server三种数据库集群。
CDS原理概述
CDS Driver是CDS中间件的核心模块,实现JDBC标准API,以Jar包形式部署在应用端,完成数据路由、连接池管理、读写分离和异常告警等功能。
SQL解析:CDS采用开源SQL解析器JSqlParser,并在其基础上进行了优化及功能扩充,包括支持自定义的宏、提供指定执行群组、限制结果集大小以及指定切分键定位等功能。同时CDS Driver通过SQL解析对象缓存机制,大大降低SQL解析带来的性能损耗。
连接池管理:CDS内置使用京东金融自主开发的WangyinCP连接池,同时也全面支持目前业界常用的连接池,如:BoneCp、C3p0、DHCP等。
慢语句统计:CDS Driver会实时统计业务查询时间超过指定阈值的SQL语句,便于业务根据慢语句进行业务优化和性能调优。
读写分离:CDS Driver根据集群配置的读写分离规则,完成应用访问的读写分离。
弱XA事务:CDS驱动本身只实现了弱XA支持,即执行阶段分库执行失败后,对事务中已完成执行的其他分库操作进行回滚;而在提交阶段,如果发生分库提交失败,则无法对之前已提交的分库进行回滚;可以通过CDS的分布式事务补偿服务进行基于BASE的最终失败的分布式事务补偿。
自定义路由算法:当CDS的几种默认路由策略无法满足业务特殊需求时,可根据业务自身需求,使用Groovy语法实现自定义路由规则。
相关推荐
数据库分库分表中间件实践,降低单机负载 降低单点故障带来的影响 提高读写的性能
Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。
开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide. 分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。 回去一看,却...
Mycat 数据库分库分表中间件 Mycat 数据库分库分表中间件
当当开源sharding-jdbc-轻量级数据库分库分表中间件,比较成熟的分库分表中间件,值得一看。
mysql分库分表中间件-candice
php分库分表
学习kingshard(一个mysql分库分表中间件)
学习kingshard(一个mysql分库分表中间件)-study-kingshard
一个MySQL分库分表php类。当一个表数据记录过大时...一般而言,分库分表属于水平分割,按照一定的规则将数据插入到不同的表中去。而分库则可以很方便的转移数据库的压力,比如将一个很大库的分 别放在不同的服务器上。
NULL 博文链接:https://brucexx.iteye.com/blog/2041284
全新设计的mysql分库分表中间件。使用netty 4.1开发,基于spring boot-cl-uw-mydb
Shark 分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与...
分库分表 各种mysql中间件 总结(csdn)————程序
sharding jdbc 这个分库分表技术要解决的问题就是,随着数据量级的提升,物理硬件达到瓶颈,单表的性能优化也带来了瓶颈。 而数据量仍然要突破的难题。 这个问题的解决方案,其实就是一种分治的思想。用一句...
虽然很多公司都致力于开发自己的分库分表中间件,但截止目前,仍无完美的开源解决方案覆盖此领域。分库分表用于应对当前互联网常见的两个场景——大数据量和高并发。通常分为垂直拆分和水平拆分两种。垂直拆分是根据...
1.6版本MyCat使用手册,用的人都知道,适合有一定规模的公司使用。 本来想免费的,居然现在不让免费了,只好要个最低的2分吧
NewSQL以及基于mysql分库分表的中间件的分析-DB-Analyse