php中间件获取分表数据,分库分表中间件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语法实现自定义路由规则。
php中间件获取分表数据,分库分表中间件CDS相关推荐
- MySQL数据库性能优化--数据分库分表
目录 前言 1.什么时候需要分库分表? 1.1.第一次改造 1.2.分库分表的必要性 1.3.第二次改造 2.分库分表应该怎么分? 3.垂直分库会带来哪些问题? 3.1.跨库的关联查询 3.2.分布式 ...
- 不要为了“分库分表”而“分库分表”
不要为了"分库分表"而"分库分表" https://www.toutiao.com/i6950110063927394830/?tt_from=weixin&a ...
- java hash 分库分表_分库分表方案
摘自:Java技术栈 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值. 在业务Service来看就是,可用数据库连接少 ...
- 老大批评我不要为了“分库分表”而“分库分表”
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来自:rrd.me/gEJnq 当数据库的数据量过大,大到一定的程 ...
- mysql+join+分库分表_MySQL分库分表篇
传统项⽬结构 数据库性能瓶颈: 1.数据库连接数有限 MySQL数据库默认100个连接.单机最⼤1500连接. 2.表数据量 1)表数量多,成百上千 2)单表数据,千万级别 3)索引,命中率问题,索引 ...
- mysql分库分区分表怎么做_mysql 分区、分表、分库分表。
一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁 ...
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...
- MySQL 新增表中的数据为另外一个或多个表的数据(业务场景:创建关系表,复制旧表数据到新表)
问题 昨天同学问了我个问题 我想写个sql脚本,循环插入数据,数据是另一个表中的a.b字段 A表中的a.b字段数据,循环加入B表中a.b字段.就是这个意思 我问他为什么不用Java写,他说是数据维护, ...
- MySQL删除表数据 MySQL清空表命令 3种方法
一.MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用. truncate删除数据后是不可以rollback的. trunc ...
- sql 清空表数据、删除表数据、主键从1开始
清空表数据 truncate table 表; 可以清除表的数据,如果有设置主键的话,再添加数据的时候主键ID还是从1开始 delete from 表; 然后重新添加数据即可. 主键从1开始
最新文章
- Promise的实例用法
- mfc如何判断读到文件尾_C++ 判断读取文件尾
- Java Socket入门实例
- Winsock网络编程快速入门
- Azure 应用服务、虚拟机、Service Fabric 和云服务的比较
- Scrapy 下载器 中间件(Downloader Middleware)
- 解释下列术语计算机系统结构,计算机系统结构第5章部分习题参考答案
- ubuntu18.04编译Open Pose 1.7
- android组件化掘金,MVPArms 官方快速组件化方案
- 《穿越计算机的迷雾》
- 有哪些较好用的项目管理软件?
- MovieLens 数据集补充版爬虫代码解析
- 计算机tcpip协议主要功能,tcp协议的主要功能
- 2021-04-30
- 网易微专业高级前端开发工程师2022
- 虚拟机中linux连网,虚拟机Linux上网的方法
- 凸包算法(Graham扫描法)
- MindManager2022免序列号弹窗解除功能限制
- 【Matlab】imresize的用法
- 【微信小程序】引导重新打开定位权限
热门文章
- 英语在线听力翻译器_英语听力翻译app下载-英语听力翻译软件下载v1.1.3 安卓版-2265安卓网...
- 向量空间的基和维数例题_向量空间的基与维数.ppt
- 二维卷积与一维卷积区别
- 介绍2个免费图片视频素材网站
- 哪个软件测试交易系统好用,交易系统测试结果的可信度检验
- 华为手机应用安装错误码分析汇总
- 大作家超级写作软件_3种对作家有用的Atom文本编辑器软件包
- 如何下载网页中的视频文件?
- 笔记 android 知乎,字节跳动团队发布Android Framework笔记,知乎上已获万赞
- 《阿里巴巴大数据实践-大数据之路》读后感言