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

php中间件获取分表数据,分库分表中间件CDS相关推荐

  1. MySQL数据库性能优化--数据分库分表

    目录 前言 1.什么时候需要分库分表? 1.1.第一次改造 1.2.分库分表的必要性 1.3.第二次改造 2.分库分表应该怎么分? 3.垂直分库会带来哪些问题? 3.1.跨库的关联查询 3.2.分布式 ...

  2. 不要为了“分库分表”而“分库分表”

    不要为了"分库分表"而"分库分表" https://www.toutiao.com/i6950110063927394830/?tt_from=weixin&a ...

  3. java hash 分库分表_分库分表方案

    摘自:Java技术栈 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值. 在业务Service来看就是,可用数据库连接少 ...

  4. 老大批评我不要为了“分库分表”而“分库分表”

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来自:rrd.me/gEJnq 当数据库的数据量过大,大到一定的程 ...

  5. mysql+join+分库分表_MySQL分库分表篇

    传统项⽬结构 数据库性能瓶颈: 1.数据库连接数有限 MySQL数据库默认100个连接.单机最⼤1500连接. 2.表数据量 1)表数量多,成百上千 2)单表数据,千万级别 3)索引,命中率问题,索引 ...

  6. mysql分库分区分表怎么做_mysql 分区、分表、分库分表。

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁 ...

  7. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)

    R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...

  8. MySQL 新增表中的数据为另外一个或多个表的数据(业务场景:创建关系表,复制旧表数据到新表)

    问题 昨天同学问了我个问题 我想写个sql脚本,循环插入数据,数据是另一个表中的a.b字段 A表中的a.b字段数据,循环加入B表中a.b字段.就是这个意思 我问他为什么不用Java写,他说是数据维护, ...

  9. MySQL删除表数据 MySQL清空表命令 3种方法

    一.MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用. truncate删除数据后是不可以rollback的. trunc ...

  10. sql 清空表数据、删除表数据、主键从1开始

    清空表数据 truncate table 表; 可以清除表的数据,如果有设置主键的话,再添加数据的时候主键ID还是从1开始 delete from 表; 然后重新添加数据即可.  主键从1开始

最新文章

  1. Promise的实例用法
  2. mfc如何判断读到文件尾_C++ 判断读取文件尾
  3. Java Socket入门实例
  4. Winsock网络编程快速入门
  5. Azure 应用服务、虚拟机、Service Fabric 和云服务的比较
  6. Scrapy 下载器 中间件(Downloader Middleware)
  7. 解释下列术语计算机系统结构,计算机系统结构第5章部分习题参考答案
  8. ubuntu18.04编译Open Pose 1.7
  9. android组件化掘金,MVPArms 官方快速组件化方案
  10. 《穿越计算机的迷雾》
  11. 有哪些较好用的项目管理软件?
  12. MovieLens 数据集补充版爬虫代码解析
  13. 计算机tcpip协议主要功能,tcp协议的主要功能
  14. 2021-04-30
  15. 网易微专业高级前端开发工程师2022
  16. 虚拟机中linux连网,虚拟机Linux上网的方法
  17. 凸包算法(Graham扫描法)
  18. MindManager2022免序列号弹窗解除功能限制
  19. 【Matlab】imresize的用法
  20. 【微信小程序】引导重新打开定位权限

热门文章

  1. 英语在线听力翻译器_英语听力翻译app下载-英语听力翻译软件下载v1.1.3 安卓版-2265安卓网...
  2. 向量空间的基和维数例题_向量空间的基与维数.ppt
  3. 二维卷积与一维卷积区别
  4. 介绍2个免费图片视频素材网站
  5. 哪个软件测试交易系统好用,交易系统测试结果的可信度检验
  6. 华为手机应用安装错误码分析汇总
  7. 大作家超级写作软件_3种对作家有用的Atom文本编辑器软件包
  8. 如何下载网页中的视频文件?
  9. 笔记 android 知乎,字节跳动团队发布Android Framework笔记,知乎上已获万赞
  10. 《阿里巴巴大数据实践-大数据之路》读后感言