网站大量收购独家精品文档,联系QQ:2885784924

京东CDS原理与实践.pptx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
京东CDS原理与实践.pptx

分库分表理论 CDS实践 如何接入CDS 目录 分库分表理论 分库分表 为什么 有什么难点 怎么分 如何 解决 分库分表理论 为什么要分库分表? 业务数据量剧增 访问并发量剧增 业务系统可用性需求 如何选择拆分策略? 垂直拆分 水平拆分 两者结合 分库分表理论 分库分表理论 分库分表理论 分库分表带来了哪些难题? 分布式事务 复杂SQL查询 跨库跨表Join 数据运维 CDS系统架构 CDS驱动架构 Application Application MySQL Oracle SQL Server SQL查询流程 Sql和参数 Sql解析 tables columns where clase max/min/count/sum/avg limit group by order by 规则计算 分表定位 Sql重写 执行sql 返回结果集 合并结果集 查询或更新结果 CDS集群结构 … 全局表A 孤立表C 切分表B 全局表A 全局表A 全局表A 孤立表C 切分表B_01 切分表B_02 切分表B_10 全局组 分库1 分库2 分库10 全局表:每个工作组都存在相同的数据备份(比如.城市、类别) 切分表:插入数据时根据切分键插入到不同分表(比如.业务流水表) 孤立表:可以存放在任意工作组包含数据表(比如.配置表) CDS集群 CDS水平拆分 单库 多级路由 水平拆分 级联路由策略 SP2=XSP3 X值Hash路由 Range路由策略 + Hash路由策略 CDS基本特性 分库分表 分区规则支持:Hash, Range, List,自定义(groovy) 支持oracle、mysql、sql server数据库 支持复合切分键 支持级联切分键 支持DDL变更 支持Sum/Max/Min/Count/Avg聚合函数 不支持:复杂子查询、更新切分键字段 非分库分表 支持存储过程 支持大部分DML、DDL CDS特性--读写分离 负载均衡 权重设置 故障恢复 复制 复制 复制 复制 CDS特性—Failover 适用于流水型业务表,记录变更与查询不依赖之前的信息 主库故障由生产DBA手动触发推送事件,将新请求指向failover库,主库恢复后需要手动做数据回迁操作 备 APP CDS 复制 复制 CDS特性--Sequence 全局Sequence 全局唯一 不保证全局有序 单点问题 分表Sequence 解决单点问题 与分表一一对应 唯一性由业务保证 数据管道 业务库 BinLogs 业务数据 数据管道服务 分布式事务 分布式系统事务处理的三种方式: 分布式事务 基于Best Efforts 1PC模式的事务 事务补偿机制 小结: 分布式事务,最严格的事务实现,性能是个大问题; Best Efforts 1PC模式,性能与事务可靠性的平衡,支持系统水平伸缩,大多数情况下是最合适的选择; 事务补偿机制,最终一致,牺牲实时一致性,获得最大的性能回报。 CDS事务补偿 基于BASE模型,通过解析Mysql的binlog来实现事务补偿,对用户完全透明,不一致时间窗口控制在秒级; 最终状态为事务失败状态,业务能感知事务失败异常; CDS事务补偿 问题: 补偿哪个binlog事务? 怎么建立mit()和mit()的联系 mit() mit() CDS事务补偿 CDS事务补偿 try{ connection1.insert、update、delete... connection2.insert、update、delete... ... ... try{ insert cluster_xa_1 insert cluster_xa_2 mit(); mit(); } catch(Exception e){ notifyTxServer(); //通知事务服务 ….. } }catch(Exception e){ connection1.rollback(); connection2.rollback(); } CDS Driver向每个分库cluster_xa表插入一条相同记录,业务服务完全透明 CDS事务补偿 xa_uuid xa_dbunits cur_dbunit timestamp xxx db1,db2 db1 xxx … … … … … … … … Cluster_XA表 xa_uuid:每个外围事务分配一个uuid,唯一标识分布式事务 xa_dbunits:外围事务涉及到的数据库单元 cur_dbunit: 当前分库标识; timestamp:时间戳,用于计算超时时间 CDS事务补偿--时序图 CDS事务补偿 ? 进程自己宕机了, 而无法向TxServer发出事务补偿通知… 解决了DB2宕机事务补偿

文档评论(0)

2837587390 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档