`
gaojingsong
  • 浏览: 1212589 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

分库分表中间件CDS

 
阅读更多

京东金融中间件团队在分析了这些实现方式利弊后,根据自身业务特点实现了基于客户端的分库分表中间件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语法实现自定义路由规则。

 

0
0
分享到:
评论

相关推荐

    Mycat数据库分库分表中间件

    Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。

    分库分表Sharding中间件Kamike.divide.zip

    开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide. 分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。 回去一看,却...

    基于Java的BigSQL分库分表中间件.zip

    基于Java的BigSQL分库分表中间件 项目简介 BigSQL是一个基于Java的分库分表中间件,旨在简化MySQL数据库的分库分表操作。它实现了MySQL服务器协议,支持任何语言和客户端工具(如MySQL图形化工具、Navicat等)的...

    去年底写的mysql分库分表中间件heisenberg

    **MySQL分库分表中间件Heisenberg详解** 在数据库设计中,随着业务的发展和数据量的增加,单个数据库往往难以承受高并发和大数据量的处理压力,这时就需要引入分库分表策略来优化系统性能。Heisenberg是一款开源的...

    Node.js 实现的 MySQL 分表分库中间件,用于海量数据的分布式集群储存管理和高并发访问。.zip

    本文将深入探讨基于Node.js实现的MySQL分表分库中间件,它在分布式集群环境中起到至关重要的作用。 首先,Node.js是一种流行的JavaScript运行环境,它允许开发人员使用JavaScript进行服务器端编程。Node.js的异步非...

    学习kingshard(一个mysql分库分表中间件).zip

    Kingshard是一款开源的MySQL分库分表中间件,它为大型互联网应用提供了高效的数据存储和访问解决方案。作为一款数据库连接器,Kingshard旨在解决单个MySQL数据库在高并发、大数据量场景下的性能瓶颈问题,通过将数据...

    学习kingshard(一个mysql分库分表中间件)-study-kingshard.zip

    《深入学习Kingshard:MySQL分库分表中间件实战》 Kingshard,作为一款开源的MySQL分库分表中间件,旨在解决大数据场景下的高性能读写问题。本文将全面解析Kingshard的设计原理、核心功能以及如何在实际项目中进行...

    mysql分库分表中间件-candice.zip

    分库分表中间件是实现这一策略的关键工具,它能帮助我们将单一的大数据库拆分成多个小数据库和表格,从而提高系统的处理能力和可用性。"mysql分库分表中间件-candice.zip"提供的正是这样一种解决方案,名为Candice。...

    Shark分布式mysql分库分表中间件sharding领域的一站式解决方案

    Shark 分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与...

    读书笔记:基于Netty的高性能MySQL分库分表中间件.zip

    读书笔记:基于Netty的高性能MySQL分库分表中间件

    Mycat 数据库分库分表中间件.pdf

    《Mycat数据库分库分表中间件》 在当今大数据时代,单个数据库系统往往无法满足高并发、海量数据的处理需求。为了解决这一问题,Mycat应运而生,它是一款开源的、基于Java开发的数据库中间件,专门用于实现数据库的...

    一个MySQL分库分表php类

    一个MySQL分库分表php类。当一个表数据记录过大时...一般而言,分库分表属于水平分割,按照一定的规则将数据插入到不同的表中去。而分库则可以很方便的转移数据库的压力,比如将一个很大库的分 别放在不同的服务器上。

    分库分表中间件MyCat使用手册

    **MyCat 分库分表中间件使用手册** MyCat 是一款开源的分布式数据库系统,它作为数据库中间件,主要用于解决大数据量场景下的数据库扩展问题。本手册基于 MyCat 1.6.0 版本,旨在帮助用户了解并熟练掌握其安装、...

    springmvc分库分表实际例子

    3. **ShardingSphere**:在SpringMVC项目中,通常会使用类似ShardingSphere这样的中间件来实现分库分表。ShardingSphere是一个开源的数据库生态项目,提供了数据库分片、读写分离、分布式事务等解决方案。它支持SQL...

    全新设计的mysql分库分表中间件。使用netty 4.1开发,基于spring boot-cl-uw-mydb.zip

    MySQL分库分表中间件是一种用于解决大数据场景下数据库扩展性的解决方案。在传统的单库单表模式下,随着数据量的增长,数据库性能会逐渐下降,影响整个系统的响应速度。为了解决这一问题,开发者通常会采用分库分表...

    NewSQL以及基于mysql分库分表的中间件的分析-DB-Analyse.zip

    在现代大数据和高并发的背景下,数据库技术的发展不断推陈出新,NewSQL与MySQL的分库分表中间件成为了应对挑战的重要手段。本分析主要探讨这两种技术,并深入理解它们在实际应用中的优缺点。 首先,让我们来了解...

    当当开源sharding-jdbc-轻量级数据库分库分表中间件

    ### 当当开源Sharding-JDBC:轻量级数据库分库分表中间件 #### 概述 当当网近期开源了一款名为Sharding-JDBC的轻量级数据库分库分表中间件。作为一款高性能、易用性高的数据库水平分片框架,Sharding-JDBC在设计上...

    MySQL 分库分表的实现原理及演示案例

    数据库分片演示环节主要演示如何通过具体的工具或中间件来实现分库分表。演示案例通常会包含数据的迁移过程、分片后的数据分布、查询语句的路由、以及事务的处理等关键技术点。例如,在水平分表的情况下,演示如何将...

    分库分表中间件 sharding

    分库分表中间件,如Sharding JDBC,是应对大数据量场景下的数据库性能优化解决方案。随着数据量的增长,单表可能会遇到性能瓶颈,此时物理硬件的升级并不能根本解决问题。分库分表的思想就是将大数据量的单一表拆分...

Global site tag (gtag.js) - Google Analytics