分布式数据库技术金融应用规范_第1页
分布式数据库技术金融应用规范_第2页
分布式数据库技术金融应用规范_第3页
分布式数据库技术金融应用规范_第4页
分布式数据库技术金融应用规范_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《分布式数据库技术金融应用规范》的技术架构及分布式事务核心功能的解读揭秘主流金融行业的分布式事务数据库的技术架构揭秘模式模式模式概念模式分布式数据库增加的全局自治BMS念模式念模式念模式模式模式模式概念模式分布式数据库增加的全局自治BMS念模式念模式念模式BMS集中式数据库原有的场地自治式式式教科书定义的分布式事务数据库的技术架构及功能特性分布式数据库:是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理能力(称为场地自治),可以执行局部应用。同时每个结点也能通过网络通讯子系统执行全局应用(称为全局自治)。Applications(e.Applications(e.gmysqlclient)SELECT*FROMTABLENAME_WHEREID=14;ApplicationApplicationApplicationApplicationApplicatiApplicationApplicatiApplicationApplicatiApplicationApplicatiApplicationSQLySQLServer(mysqld)ySQLSDrtar(mysqld)ySQLServer(mysqld)StorageStorage(datanodes)(ndbScanScanScanDataDataDataDataCluster计算汇总(ndb(ndb(ndbManagementManagementCManagementClient(e.gndb_mgm)MManagementServer(ndb_mqmd)Proxy合并结果RESULESRESULESRESULESChunkServeProxy合并结果RESULESRESULESRESULESChunkServerMergeServer国内三种主流金融行业的分布式事务数据库的技术架构揭秘:数据缓存节点和数据持久节点结合应应用程序层数据库接入层数据库接入层增量数据层增量数据层全全量数据层UPDATETABLENAMESET…UPDATETABLENAMESET…WHEREID<100;_ApplicationClientClientClientAApplicationVIPSQLLayerSQLLayerVIPProxyUPDATETABLENAMESET…WHEREUPDATETABLENAMESET…WHEREID<100;_UPDATETABLENAMESET…WHEREID<100;_UpdateServerUpdateServerUpdateServerUpdatUpdateServerFullDataLayerChunkServerFullDataLayerChunkServerMergeServerMergeServeChunkServerr架构特征:久层共计四部分,做到应用层DML/DQL/DCL等全部功能。多机多个数据分片的数据操作将数据持久到固态硬盘或闪存支付宝PP微信云闪付务342业...1____F5/LVSF5/LVSAPPAPPAPP...PPA分布式事务数据库事务数据库支付宝PP微信云闪付务342业...1____F5/LVSF5/LVSAPPAPPAPP...PPA分布式事务数据库事务数据库分布式事务数据库分布式布式事务数据库水平扩展分1MySQL/Oracle/DB2等数据库业务数据N业务数据2业务数据3...合应应用服务前端接入应用服务负载均衡应用服务后端分布式分布式事务数据库的计算节分布式事务数据库的计算节点分布式事务数据库的存储节分布式事务数据库的存储节点架构特征:到应用层完全透明据库服务端全部的DDL/DM据分片内的数据操作和事务控制支付宝APP1 F5/LVSF5/LVS业务代码业务代码业务代码…DataSharding组件DataSharding组件支付宝APP1 F5/LVSF5/LVS业务代码业务代码业务代码…DataSharding组件DataSharding组件DataSharding组件1DataSharding配置中心数据存储层MySQL/Oracle/DB2等数据库_应用负载均衡微信微信_应应用程序层路路由层0K架构特征:1、应用程序层借助驱动程序嵌入数据路由信息和实现简单的数据结果集合并2、数据存储层的数据分片由应3、数据存储层高可用借助第三方组件实现融行业的分布式事务数据库的技术架构揭秘:技术架构优劣总结融行业的分布式事务数据库的技术架构揭秘:技术架构优劣总结维度项数据缓存节点和数据持久节点结合计算节点和存储节点组合应用层和路由层耦合技术生态融入现有生态融入现有生态数据分片智能自动的数据分片智能自动的数据分片人为设计的数据分片稳定可靠服务集群负载均衡式服务HA高可用式服务集群负载均衡式服务HA高可用式服务HA高可用式分布式事务支持支持不支持数据一致性强强不支持死锁支持自动智能的死锁检测支持自动智能的死锁解除支持自动智能的死锁检测支持自动智能的死锁解除不支持数据库语法支持度高高低全局统一数据库视图支持支持不支持扩展性在线水平扩容缩容在线水平扩容缩容停机且有限水平扩展可维护性简单简单复杂硬件设施中等成本低成本低成本文件系统标准通用标准通用分布式事务数据库的技术架构及功能特性金标委定义的分布金标委定义的分布式事务数据库的技术架构及功能特性分布式事务数据库:采用分布式事务处理机制的数据库。金金融业务系统应用程序金融级分布式事务数据库特性金融级分布式事务数据库特性水平可扩展服务高可用数据安全性数据可靠性数据库基本能数据库基本能力一致性算法透明加密分布式事务数据库能力分布式数据存储分布式事务读写分离并行计算全局序列全局索引LinuxLinux系统X86架构分布式事务数据库基础平台Unix系统ARM架构操作系统硬件架构…………分布式部署状态监控备份/恢复系统配置分布式部署状态监控备份/恢复系统配置系统日志数据同步性性能监控统计分统计分析版版本升级导导入/导出数据加载数据加载分布式事务数据库运维管理——以通用标准的物理服务器和操作系统为基础平台。数据存储和数据处理在X86、ARM等架构的物理服务器上,操作系统为以类Linux操作系统为基础的各类国产操作系统、商用操作系统、开源操作操作等软件平台上。——分布式数据一致性协议。使用分布式数据一致性协议保证数据的高可靠性和服务的高可用性,通用标准物理服务器、操作系统出现损坏异常时,实现数据不丢失、数据强一致性和服务——数据分片技术。使用数据分片技术将数据库表对象分散存储到不同的数据分片中,及数据库表对象中的数据存储到不同的数据分片中。结合分布式数据一致性协议则能做到数据分片内和数据分片间的数据一致性。同时,结合弹性水平扩展技术将多个数据分片分布到不同的物理服务器上,实现数据容量和交易负载在数据库集群内的均衡分布,并向上屏蔽内部数据分片的细节和复杂性,让数据库使用方能够通过访问单一表而能获取和操作所有表对象数据分片中的数据。——弹性水平扩展。使用数据分片技术,将多个数据分片整合成逻辑上统一的分布式事务数据库集群,并根据业务发展需要可随时在线动态增加/减少数据分片数量,从而突破集中式数据库在存储容量和处理性能上所面临的限制。——事务一致性技术。在同一个数据中心内数据库表对象及数据分散存储在多个物理服务器上的情况下,满足在线联机交易(简称OLTP)业务系统对事务操作和读写一致性的要求而采用的技术,包括但不限于分布式事务(ACID)、全局一致性快照、全局多版本并发控制(MVCC)、跨数据分片的数据关联等技术。专业术语专业术语定义描述分布式事务事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同节点之上的事务联机事务处理要求快速响应用户请求的数据库联机操作,对于数据的安全性、完整性要求很高数据水平分片将数据库表中的数据根据业务扩展需要,水平分散到多个数据节点,实现数据容量和负载在数据库集群内的均衡分布水平扩展根据实际业务需求,动态增加或者减少数据库集群中物理服务器的数量,以实现存储容量和计算资源的弹性伸缩计算节点、连接池、高可用、数据一致性等存储节点存储数据的数据源,及承担单个数据分片内的全部数据库操作数据节点由一组存在数据同步关系的存储节点组成,是属于逻辑概念,物理上不存在一致性协议算法在分布式事务数据库中,用来保证数据高可靠性的协议,以确保不会因为故障而造成数据不一致问题CREATETABLET4(IDINTAUTO_INCREMENTNOTNULL,VALUEINT,PRIMARYKEY(ID));CREATETABLET4(IDINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,VALUECREATETABLECREATETABLET4(IDINTAUTO_INCREMENTNOTNULL,VALUEINT,PRIMARYKEY(ID));CREATETABLET4(IDINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,VALUECREATETABLET4(IDINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,VALUEAPPAPPINSERTINTOT4VALUES(NULL,123);INSERTINTOT41001条记录;APPLVS/F5/A10计算节点计算节点INSERTINTOT4300条记录;INSERTINTOT4301条记录;INSERTINTOT4400条记录;获取下一批次自增序列3001-4000VALUE2701701……3001001VALUE2301301……2700700VALUEry3VALUE2001001……2300300MySQLMySQLMySQLMySQLMySQLMySQLMySQLCREATETABLET4(IDINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,VALUE分布式事务数据库的全局序列的技术原理及功能特性LVSLVS/F5/A10计算节点集群启动,分配自增序列1001-2000计算节点集群启动,分配自增序列1001-200023QueryOK管理平台MySMySQLdn_3dn_4dndn_3dn_4dn_2•集群启动时,每个跟随者角色的计算节点从指挥官角色的计算节点获取自增序列值段举例:(指挥官角色)Primary计算节点自增序列号1-1000,第一个(跟随者角色)Secondary计算节点自增序列号1001-2000,第二个(跟随者角色)Secondary计算节点自增序列号2001-3000•分布式事务数据库中使用自增序列方式与单库MySQL一致举例:CREATETABLET4(IDINTNOTNULLAUTO_INCREMENT,VALUEINT,PRIMARYKEY(ID));•批量插入数据时,当数据量超过单个计算节点拥有的可用自增号数量时,计算节点需要再次获取下一批次自增序列号举例:通过第二个计算节点插入1001条数据时,因为该计算节点仅有1000个可用的自增序列号,因此需要向主计算节点重新获取下一批次自增序列号进行使用,即3001-4001VIP计算节点(主)计算节点(备)时延>1秒Master读写分离的基础功能摘要信息:1.主从VIP计算节点(主)计算节点(备)时延>1秒Master读写分离的基础功能摘要信息:1.主从存储节点的同步延迟判断,对延迟从库摘除和自动恢复2.主从存储节点的数据一致性算法核对的定期执行3.事务内的读操作、写操作都由主存储节点承担4.非事务内的读操作负载均衡地发到从存储节点上执行5.强制某一类读操作SQL语句发送到从存储节点上执行Slave分布式事务数据库的读写分离的技术原理及功能特性…APPAPPA…APPAPPu从读者信息表中读取上海地区的客户信息u主从一致延迟超过1秒钟:存储节点被摘除u挑选数据延迟阈值内的从存储节点读操作uHint指定读从存储节点u被摘除的从存储节点数据追平,则恢复正常SlavSlaveSlaveSlaveMSlaveSlave_VALUES(104100000004,‘中国银行总部’)517,建设银行总行)063光大APPDS1DS1’_VALUES(104100000004,‘中国银行总部’)517,建设银行总行)063光大APPDS1DS1’DS2DS2’MIDF3051000013INSERTINTOtablename分布式事务数据库的并行计算INSERT的技术原理及功能特性以存储支付机构号数据的MIDF字段作为分片字段,使用路由算法MATCH函数。假设数据路由配置规则为:机构号104100000004和305100000013存储到数据节点DN1;分布式事务数据库机构号105100000017和303100000006存储到数据节点DN2。分布式事务数据库01000000路由规则为DN节点MIDF动画演示:数据拆分为2个数据节点(DN1和DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片路由算法及分片函数MATCH,控制数据行的存储分布位置。INSERTINTOtablenameVALUES(305100000013,‘中国民生银行总行)_APP以存储支付机构号数据的MIDF字段作为分片字段,使用路由算法MATCH函数。假INSERTINTOtablenameVALUES(305100000013,‘中国民生银行总行)_APP以存储支付机构号数据的MIDF字段作为分片字段,使用路由算法MATCH函数。假设数据路由配置规则为:机构号104100000004和305100000013存储到数据节点DN1;机构号105100000017和303100000006存储到数据节点DN2。(303100000006,‘中国光大银行总行);__DS2DS2’MIDFMIDFINSERTINSERTINTOtablenameVALUES(104100000004,‘中国银行总部’),(105100000017,‘中国建设银行总行);_INSERTINTOINSERTINTOtablenameVALUES_Queryok,2rowsaffected;INSERTINTOtablenameVALUES(104100000004,‘中国银行总部’);INSERTINTOINSERTINTOtablenameVALUES(104100000004,‘中国银行总部’);INSERTINTOtablenameVALUES(105100000017,‘中国建设银行总行);分布式事务数据库104100000004路由规则为DN1,105100000017路由规则为DN2104100000004路由规则为DN1,105100000017路由规则为DN2DSDS1DSDS1’动画演示:数据拆分为2个数据节点(DN1和DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片路由算法及分片函数MATCH,控制数据行的存储分布位置。_UPDATEtablenameSETISSUER=“中国建设银行分行”WHEREMIDF_UPDATEtablenameSETISSUER=“中国建设银行分行”WHEREMIDF=105100000017;以存储支付机构号数据的MIDF字段作为分片字段,使用路由算法MATCH函数。假设数据路由配置规则为:DS1DS1’affectedMIDF303100000006中国光大银行总行MIDF104100000004中国银行总部305100000013中国民生银行总行分片字段值105100000017经路由算法MATCH函数计算,得出存储位置为DN2节点分布式事务数据库的并行计算UPDATE单条数据的技术原理及功能特性APAPP 分布式事务数据库机构号104100000004和305100000013存储到数据节点DN1;机构号105100000017和303100000006存储到数据节点DN 分布式事务数据库DSDS2DSDS2’动画演示:数据拆分为2个数据节点(DN1和DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片路由算法及分片函数MATCH,计算出分片字段值的存储位置分布,控制SQL语句路由到正确的存储数据节点上执行,并返回结果集给应用程序。_UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)_UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREMIDFIN(105100000017,305100000013);以存储支付机构号数据的MIDF字段作为分片字段,使用路由算法MATCH函数。假设数据路由配置规则为:机构号104100000004和305100000013存储到数据节点DN1;机构号105100000017和303100000006存储到数据节点DN2。__DS1DS1’DS2DS2’MIDFw中国建设银行行303100000006中国光大银行总行affected;分布式事务数据库的并行计算UPDATE多条数据的技术原理及功能特性APAPPUPDATEtablenameSETISSUER=UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREMIDFIN(105100000017,UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREMIDFIN(105100000017, 分布式事务数据库Queryok,2rows分片字段值105100000017,305100000013经路由算法MATCH函数计算,得出存储位置分别为DN1节点和DN2节点affected;305100000013)MIDF104100000004中国银行总部fftdfftdow中国民生银行行aaece;动画演示:数据拆分为2个数据节点(DN1和DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片路由算法及分片函数MATCH,计算出分片字段值的存储位置分布,控制SQL语句路由到正确的存储数据节点上执行,并返回结果集给应用程序。_DS1DS1’MIDF1051_DS1DS1’MIDF105110117,‘中国建设银行总行’303100000006中国光大银行总行MIDF104100000004中国银行总部305100000013中国民生银行总行分片字段值105100000017经路由算法MATCH函数计算,得出存储位置为DN2节点SELECT*FROMtablenameWHEREMIDF=105100000017;SELECT*FROMtablenameWHEREMIDF=105100000017;分布式事务数据库的并行计算SELECT单条数据的技术原理及功能特性APP假设数据路由配置规则为: 分布式事务数据库机构号104100000004和305100000013存储到数据节点DN1;机构号105100000017和303100000006存储到数据节点DN 分布式事务数据库DS2DS2DSDS2’动画演示:数据拆分为2个数据节点(DN1和DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片路由算法及分片函数MATCH,计算出分片字段值的存储位置分布,控制SQL语句路由到正确的存储数据节点上执行,并返回结果集给应用程序。分布式事务数据库的并行计算SELECT多条数据的技术原理及功能特性支付机构号数据的MIDF字段+报文标识号MROOT字段组合作为分片字段,使用路由算法MATCH函数和哈希约定算法HASH函数分布式事务数据库的并行计算SELECT多条数据的技术原理及功能特性支付机构号数据的MIDF字段+报文标识号MROOT字段组合作为分片字段,使用路由算法MATCH函数和哈希约定算法HASH函数。假设数据路由配置位置为:机构号104100000004与104100000001组合、305100000013与305100000002组合存储到数据节点DS2DS2’ISSUER105100000017中国建设银行总行3051000000023031000000010410000000ISSUER104100000001305100000013中国民生银行总行30510000000241000000011041104,‘中国银行总部’,10104100000001APPSELECTO.MIDFASA,O.ISSUERASOISS,APPO.MROOT,P.MIDFASB,P.ISSUERASPISSFROMMASOJOINMASPONO.MROOT=P.MROOTWHEREO.MROOT=104100000001;SELECTO.MIDFASA,O.ISSUERASOISS,O.MROOTFROMMASOWHEREO.MROOT=104100000001;分布式事务数据库104100000004,‘中国银行总部’,104100000001,303100000006,‘中国光大银行总行’SELECTSELECTO.MIDFASA,O.ISSUERASOISS,O.MROOTFROMMASOWHEREO.MROOT=104100000001;分布式事务数据库104100000004,‘中国银行总部’,104100000001,303100000006,‘中国光大银行总行’DSDS1DSDS1’动画演示:数据拆分为2个数据节点(DN1、DN2),每个数据节点为经典的双主架构(DS1和DS1’为一对,DS2和DS2’为一对)。通过分布式事务数据库的分片哈希约定算法及分片函数HASH,及分布式事务数据库的内置JOIN算法引擎,实现跨数据节点的JOIN及数据结果集合并处理再返回正确的结果集。分布式事务数据库的功能特性分布式事务分布式事务应用透明的计算节点架构和引入管理协调节点架构的差异分布式事务应用透明的计算节点架构和引入管理协调节点架构的差异 update1;;应用pdate1;引入“管理协调节点”带来的问题优势:管理协调节点无状态计算节点有状态计算节点u可靠性问题:交互环节增多,增加隐患点 管理协调节点无状态计算节点有状态计算节点制计算节点成为有状态的问题优势: 数量受分布式一致性协议限制测试方案:__T1线程,产生随机数N,循环执行:STARTTRANSATCION;UPDATETRANSACTEST测试方案:__T1线程,产生随机数N,循环执行:STARTTRANSATCION;UPDATETRANSACTESTSETVALUE=VALUE+NWHEREUPDATETRANSACTESTSETVALUE=VALUE-NWHEREAPPT2线程,休眠0.1秒,循环执行:查询T1中两行对应字段值及其和APPLVS/F5/A10•T1线程,产生一个新的整型的范围在1到100的随机数,在分布式数据库开启事务,扣减R1的C1字段该随机值数值,增加R2的C1字段该随机值数值,提交事务;然后T1线程循•T2线程,休眠0.1秒,开启事务,查询R1与R2行的C1字段及其和并记录结果,休眠0.1秒,查询R1与R2行的C1字段及其和并记录结果,提交事务;然后T2线程循环执行此过程1000次测试结果参考:Read计算节点计算节点MySQLMySQLMySQLMySQL分布式事务隔离级别的功能效果及测试验证方法AAPPLVSLVS/F5/A10COMMIT;+N计算节点和始终为0-+N计算节点和始终为0管理平台VALUE4-15-26-374VALUE1122338-管理平台VALUE4-15-26-374VALUE1122338-4-1-MySQLMySQLRepeatableRead:T2线程在事务中的读取,一次都不出现字段和不为0的现象,并且一次都不出现一个事务中两次查询R1的C1字段值发生变化的现象,可能并且应该出现,两个事务之间查询到的R1的C1字段值发生变化MySQLMySQLMySQLdn_4dn_2dn_3dn_1Serializable:此测试现象的要求和repeatableread相同,T1线程可能出现因锁等待变慢 (根据实dn_4dn_2dn_3dn_1 APPUPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_UPDATEtablenameSETISSUER=REPLACE( APPUPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_StartDN18UPDATEOKActiveMasterStandbyMasterUPDATEOKActiveMasterStandbyMasterPrepareOK512中国建设银行行706中国光大银行行UPDATE操作......分布式事务原子性的功能效果及测试验证方法动画演示:数据拆分为18个数据节点 据节点为经典的双主架构 asterStandbyMaster为一组)。通过分布式事务数据库的分片哈希约定算法及分片函数HASH,及分布式事务数据库的内置强一致分布式事务算法引擎,保证跨数据分片的事务在正常场景或异常场景下都能做到数据结果集始UPDATEUPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_分布式事务数据库分布式事务数据库104中国银行行313中国民生银行行......UPDATEISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1UPDATEISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000SETUPDATEISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000SETStartUPDATEISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000SETActiveMasterStandbyMasterActiveMasterACKStandbyMasterDN18ActiveMasterStandbyMaster分布式事务原子性的功能效果及测试验证方法动画演示:table_name APPtable_name APPMaster与StandbyMaster为一组)。table_nametable_name点(DN1~DN18),每个数据节点为经典的双主分布式事务数据库分布式事务数据库SQL+PrepareUPDATE操作SQL+PrepareSQL+PrepareUPDATE操作SQL+Prepare104中国银行行313中国民生银行行......512中国建设银行行706中国光大银行行PrepareOKUPDATEOKPrepareOKUPDATE操作UPDATEOK主库故障ACK......分片哈希约定算法及分片函数HASH,及分布式事务数据库的内置强一致分布式事务算法引擎,保证跨数据分片的事务在正常场景或异常场景下都能做到数据结果集始终一致。 APPStartStandbyMasterA APPStartStandbyMasterActiveMasterUPDATEOKActiveMasterStandbyMasterDN18512中国建设银行行706中国光大银行行UPDATE操作UPDATEOKUPDATE操作......网络不通分布式事务原子性的功能效果及测试验证方法动画演示:数据拆分为18个数据节点(DN1~DN18),每个数据节点为经典的双主架构(ActiveMaster与StandbyMaster为一组)。通过分布式事务数据库的分片哈希约定算法及分片函数HASH,及分布式事务数据库的内置强一致分布式事务算法引擎,保证跨数据分片的事务在正常场景或异常场景下都能做到数据结果集始终一致。UPDATEUPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_UPDATEtablenameUPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_UPDATEtablenameSETISSUER=REPLACE(ISSUER,‘总行’,’分行’)WHEREID>1andID<1000_分布式事务数据库分布式事务数据库MySQL自动回滚MySQL自动回滚中国银行行313中国民生银行行......SESSION2:SELECTCOUNT(*)FROMTABLE_NAME;APPAPPAPPLVS/F5/A10LVS/F5/A10BeginTOTABLENAMEVALUESSESSION2:SELECTCOUNT(*)FROMTABLE_NAME;APPAPPAPPLVS/F5/A10LVS/F5/A10BeginTOTABLENAMEVALUESXXXXXXCOMMIT;BeginDELETEFROMTABLE_NAMEVALUES(XXX),(XXX)…;COMMIT;BeginTOTABLENAMEVALUESXXXXXXCOMMIT;BeginDELETEFROMTABLE_NAMEVALUES(XXX),(XXX)…;COMMIT;BeginTOTABLENAMEVALUESXXXXXXCOMMIT;BeginDELETEFROMTABLE_NAMEVALUES(XXX),(XXX)…;COMMIT;BeginTOTABLENAMEVALUESXXXXXXCOMMIT;BeginDELETEFROMTABLE_NAMEVALUES(XXX),(XXX)…;COMMIT;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)出的结果为0或1000;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)FROMTABLE_NAME;计算节点计算节点Queryok;Queryok;Queryok;Queryok;Queryok;Queryok;Queryok;MySQLMySQLMySQLMySQLMySQLMySQLMySQLSESSION1:TRANSACTION1:批量插入1000条数据TRANSACTION2:删除上一步插入的1000条数据Queryok;分布式事务数据库核心技术算法功能:分布式事务的数据读一致性VIPVIP计算节计算节点管理平台MMySQLdn_1dn_2dn_3dn_4一个是INSERT1000条数据,一个是DELETE第二步骤:开启第二个SESSION进行SELECTCOUNT(*)操作,查询所有节点的数据总数,1000,保障分布式事务的数据读一致。SESSION2:SELECTCOUNT(*)FROMTABLE_NAME;APPAPPAPPVIPLVS/F5/A10INSERTINTOTABLENAMEVALUESXXXSESSION2:SELECTCOUNT(*)FROMTABLE_NAME;APPAPPAPPVIPLVS/F5/A10INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;INSERTINTOTABLENAMEVALUESXXXXXX;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)FROMTABLE_NAME;SELECTCOUNT(*)出的结果为1000的整数倍;SELECTCOUNT(*)FROMTABLE_NAME;计算节点计算节点管理平台MySQLMySQLMySQLQueryok;Queryok;Queryok;Queryok;Queryok;Queryok;Queryok;Queryok;MySQLMySQLMySQLKILLSESSION1:自动提交模式反复执行:批量插入1000条数据分布式事务数据库核心技术算法功能:分布式事务的数据写一致性LVSLVS/F5/A10计算节计算节点MMySQLMMySQLdn_1dn_2dn_3dn_4第一步骤:开启一个SESSION,反复执行INSERT供脚本)第三步骤:停止第一个SESSION的插入操作;。开启A客户端执行A事务:BEGIN;SELECT*FROMTABLE_NAMEWHEREID=11FORUPDATE;INSERTINTOTABLE_NAME(ID,NAME)VALUES(11,'abc’),(12,'abc’),(13,'abc’),(14,'abc’);依旧在B客户端继续执行B事务:UPDATETABLE_NAMESET开启A客户端执行A事务:BEGIN;SELECT*FROMTABLE_NAMEWHEREID=11FORUPDATE;INSERTINTOTABLE_NAME(ID,NAME)VALUES(11,'abc’),(12,'abc’),(13,'abc’),(14,'abc’);依旧在B客户端继续执行B事务:UPDATETABLE_NAMESETNAME=‘bcd’WHEREID=11;依旧在A客户端继续执行A事务:UPDATETABLE_NAMESETNAME=‘bcd’WHEREID=14;APPAPPAPPLVS/F5/A10LVS/F5/A10INSERTINTOTABLE_NAME(ID,NAME)VALUES(12,'abc');_SELECT*FROMTABLENAMEWHEREID=14FORUPDATE;_UPDATETABLENAMESETNAME=‘bcd’WHEREID=11;_UPDATETABLENAMESETNAME=‘bcd’WHEREID=14;INSERTINTOTABLE_NAME(ID,NAME)VALUES(11,'abc');INSERTINTOTABLE_NAME(ID,NAME)VALUES(14,'abc');_SELECT*FROMTABLENAMEWHEREID=11FORUPDATE;发生锁争用,死锁检测模型判断出现死锁Queryok;计算节点计算节点计算节点NAMabcNAMabcNAM11abcMySQLMySQLMySQL MySQLMySQLMySQLMySQLrykNAMabcINSERTINTOTABLE_NAME(ID,NAME)VALUES(13,'abc');开启B客户端执行B事务:BEGIN;SELECT*FROMTABLE_NAMEWHEREID=14FORUPDATE;VIPVIP管理平台MMySQLdn_1dn_3dndn_1dn_3dn_4第一步骤:在数据分片到不同存储节点的前提下1)以下两行数据分布在不同数据节点)开启一个客户端执行A事务,如下:select*fromtable_namewhereid=11forupdate;updatetable_namesetname='bcd'whereid=14;3)开启另一个客户端执行B事务,如下:select*fromtable_namewhereid=14forupdate;updatetable_namesetname='bcd'whereid=11;bcdNAMbcdNAMLEAPPAPP第一步:死锁检测算法发现锁争用的环形来解除那个事务已争用到的锁资合要求且保证能破解环形锁的其中一个或多个事务进行回滚操作VIPLVS/F5/A10计算节点计算节点illqueryB事务失败死锁解除:选择解除代价最小的NAMEabcNAMEabcAPPAPP第一步:死锁检测算法发现锁争用的环形来解除那个事务已争用到的锁资合要求且保证能破解环形锁的其中一个或多个事务进行回滚操作VIPLVS/F5/A10计算节点计算节点illqueryB事务失败死锁解除:选择解除代价最小的NAMEabcNAMEabcNAM11MySQabcMySQL MySQLMySQLMySQLMySQLMySQLNAMry;abcAAPPLVSLVS/F5/A10计算节计算节点管理平台MMySQLdn_2dn_3dndn_2dn_3dn_4片与数据库实现数据分片的区别应用层和分布式事务数据库两种方式实现数据分布式的核心区别应用层和分布式事务数据库两种方式实现数据分布式的核心区别维度项应用层实现数据分布式分布式事务数据库产品实现数据分布式单个存储节点维度的应用连接数存储节点服务端:单个应用程序服务创建的连接的数量*应用服务个数计算节点服务端:单个应用程序服务创建的连接的数量*应用程序服务个数存储节点服务端:以单个mysqld服务的TPS/QPS最佳吞吐量128-256个并发为准单个应用程序服务维度的数据库连接数应用程序服务端:单个存储节点连接的数量*数据分片数量,增加开销应用程序服务端:单个数据库连接的数量,无额外开销数据服务的高可用应用程序服务端或借助第三方组件实现数据服务的高可用计算节点服务的高可用:分布式选举算法,且支持少于半数计算节点和只剩下一个计算节点都能确保正常提供数据服务存储节点服务的高可用:计算节点服务的内置智能算法架构设计成本规避跨数据分片数据操作的成本高,抬高技术门槛及需专家分析实现减少跨数据分片数据操作的成本低,由AI算法实现智能数据分片降低技术门槛应用开发成本跨数据分片数据访问的研发成本高,代码增加量庞大且不通用无研发成本,应用强透明维护管理成本存储节点的数量决定维护管

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论