`

阿里分布式事务设计思路

阅读更多

数据库不在一个实例上面,比如支付宝账户表和余额宝账户表显然不会在同一个数据库实例上,他们往往分布在不同的物理节点上,这个时候一定要避免使用本地事务。在跨库操作中,如果使用本地事务,往往会使本地事务失效,或者造成庞大的服务器开销,引发服务器死掉的极端影响。

 

 

本地事务:一般情况下,一个庞大的数据库表需要按照拆分字段进行分离,拆分成多个数据库实例,这个分离也是有规则的。比如按照用户USERID这个维度进行拆分,无论有多少个表,只要具有同一个拆分字段,那么具有相同USERID的数据都会存在于一个物理机器上面。通常情况下,我们在业务处理中,相当大的业务都会使用同样一个维度进行操作(因为一个人使用淘宝买东西,很多操作都是围绕这个人进行的,比如这个人的订单,这个人的资金,这个人的浏览记录......这是从购买者的角度上来看的。当然还有从商品的角度上面还看的业务,这个后面再说,我们可以先把从购买者角度上面的归集起来),张三操作的,只有这一个人,不会变成李四,这就决定了无论多少个表关联,都会存在于一个物理机上面,在不考虑事务时间的情况下,可以放心大胆的使用本地事务了。

 

异构索引表:一个人在淘宝买东西,从业务上面来看,不仅仅需要从购买者的角度来操作,还需要从商品的角度上面来操作。对于一个订单,假如有从购买者角度的表,我们非常容易的能够使用购买者ID定位到物理库位置,然后查询到这个订单。但是如果要通过商品或者卖家呢?直接查询的话,因为不知道购买者ID,只能进行全库查询,造成非常大的开销。因此,需要建立异构索引表,表结构和数据一模一样,只能分库主键为商品ID。当需要不同的业务时,就需要操作不同的异构索引表。

 

消息系统的分布式事务:上面说到了异构索引表,表数据是一样的,只是因为业务的需要,创建了不同维度的表。但是如何进行数据同步?使用本地事务肯定行不通,在多个数据库进行分布式事务,开销非常大的。只能通过消息系统的分布式事务解决。所有跨库操作都只能通过这种方式处理。

 

多个物理节点上面的本地事务:如果需要在多个物理节点使用Join操作,如果数据量不太大,就使用小表广播的方式。如果数据量太大了,那就需要在代码方面处理,尽量拆分为当个物理节点上面的事务操作。即分别单独在一个物理库上面执行事务,有多少个数据库,就执行多少次。

 

数据库连接资源:对于一个数据库连接,我们通常需要严格保证事务的时间,不能无限制的占用资源。因此,在本地事务中,尽量不要使用太大的事务,浪费数据库资源。

分享到:
评论

相关推荐

    阿里-分布式事务专利稿全集

    通过深入研究这些专利稿,我们可以了解到阿里巴巴在解决分布式事务难题上的独特思路和技术积累,这对于理解和实践分布式系统设计具有重要的参考价值。同时,这些专利也可能为其他开发者提供了借鉴和启示,推动整个...

    minenacos.rar

    《Nacos、Seata在分布式事务中的应用实践》 Nacos和Seata是两个在分布式系统中广泛应用的组件,...这种设计思路不仅提高了系统的可扩展性和稳定性,还降低了开发和运维的复杂度,是现代分布式系统中的一种典型实践。

    大型企业级分布式订单系统项目-课程大纲

    第一章 项目概述:授课思路、代码规范、云端部署 第二章 生单链路中的技术问题分析和代码落地 第三章 预支付中的技术问题分析和代码落地 第四章 支付成功后的履约场景问题分析和代码落地 第五章 阿里云生产环境部署...

    阿里中台架构,讲述中台战略、中台战术、中台建立落地的思路和经验。

    2. 基础服务层(PAAS层):包括一系列中间件服务,如分布式服务框架、分布式数据库、分布式消息系统、分布式存储、分布式事务和实时监控服务等,这些服务为上层业务提供了必要的技术支持。 3. 互联网业务中台:这是...

    youlai-mall-admin-master.zip

    SpringCloud Alibaba则是阿里巴巴提供的SpringCloud生态系统的扩展服务,它包含了一系列的中间件,如Nacos(服务注册与发现)、Sentinel(流量控制、熔断降级)、Seata(分布式事务解决方案)等,这些组件在实际的...

    2014年3月阿里巴巴暑期实习笔试题目

    4. **数据库管理**:数据库查询优化、事务处理、索引构建和使用、数据库设计(如范式理论)等知识可能会出现在题目中。这要求候选人对SQL有深入理解,并能解决实际数据库问题。 5. **网络基础知识**:TCP/IP协议、...

    rocketMQ-master.zip

    8. 分布式事务:RocketMQ支持分布式事务,通过两阶段提交协议(2PC)来保证跨节点的事务一致性。 9. 高可用和容灾:RocketMQ提供了主备切换、镜像复制等机制,确保在单点故障时能够自动恢复服务。 10. 扩展性:...

    技术之瞳 阿里巴巴面试笔试 高清pdf

    5. **分布式系统**:分布式计算、分布式存储、分布式锁、CAP定理、一致性哈希等分布式系统的设计与实现。 6. **算法与数据结构**:面试中经常会遇到实际的编程题目,要求现场编写算法,如查找、排序、图论问题等,...

    阿里 面试 题目

    8. **分布式技术**:分布式缓存(如Redis)、消息队列(如RabbitMQ、Kafka)、负载均衡、分布式事务等。 四、以往题目分析 文档"Java面试要点+以往题目.doc"很可能包含了过往的面试题目,建议深入研究并模拟解答,...

    rocketmq4.9.4源码包文件

    通过深入分析RocketMQ的4.9.4源码,我们可以了解到其在高并发、高可用、消息可靠传输等方面的设计思路和实现细节,这对于理解和优化分布式系统以及开发类似中间件有着极大的帮助。对于开发者而言,理解RocketMQ的...

    阿里技术参考大全.zip

    - **分布式系统**:CAP理论、一致性哈希、分布式锁、分布式任务调度。 - **高可用与容灾**:双活、读写分离、负载均衡、故障切换策略。 - **数据库设计**:关系型数据库与NoSQL的选择、索引优化、分库分表策略。 ...

    oceanbase-miniob-test大赛

    4. **分布式事务处理**:测试选手对分布式事务的理解,如何在分布式环境下保证事务的一致性和隔离性。 5. **系统设计**:设计大规模分布式数据库解决方案,考察选手在面对复杂业务需求时的架构设计能力。 四、比赛...

    阿里各岗位技术面试题含答案最新.pdf

    设计思路可能包括: - 快照技术:定期创建数据库的快照,用于快速恢复。 - binlog/transaction log:跟踪并存储所有的事务日志,用于增量恢复。 - 分布式存储:利用分布式存储系统提高备份效率和恢复速度。 - ...

    learn-alibaba-master.zip

    而SpringCloud Alibaba则是SpringCloud的扩展,它引入了阿里巴巴的中间件产品,包括Nacos服务注册与发现、Sentinel熔断器、Seata分布式事务处理等。这些组件的集成使得SpringCloud Alibaba成为构建大规模分布式系统...

    基于SSM搭建一个使用Dubbo做服务治理的分布式商城系统YouxinStore(优信商城).zip

    9. **源码分析**:通过对项目的源码学习,开发者可以理解系统的设计思路,掌握如何在实际项目中应用SSM和Dubbo,同时了解如何设计和实现分布式服务治理的各个环节。 10. **测试与运行**:源码已经过严格测试,可以...

    银行云平台建设及架构转型思路.pptx

    对于银行这类对数据强一致性要求高的行业,分布式架构的应用需要谨慎评估,尤其是数据库和分布式事务处理技术的成熟度。 银行建设分布式架构私有云平台的必要性主要体现在几个方面:一是国家政策导向,强调信息科技...

    腾讯 阿里 网易 字节跳动等IT互联网公司面试指南

    5. **高级技术概念**:面试官会关注候选人的高级技术掌握程度,如JVM调优、HashMap的底层实现、线程池的实现原理、并发控制策略、分布式框架如Zookeeper的功能,以及数据结构(如红黑树、B树、B+树)。 6. **前端...

    第三届阿里巴巴中间件性能挑战赛初赛-基于Open-Messaging实现进程内消息引擎 比赛代码.zip

    这可能包括了参赛队伍的设计思路、实现细节、测试用例等,对于理解比赛的要求、参赛者的策略以及学习相关技术有很高的价值。 【标签解析】 "比赛项目源码" 这个标签确认了压缩包中的主要内容,即与比赛项目相关的源...

    应对sharding-jdbc结合mybatis实现分库分表功能 分表的联合查询采用将mysql的数据同步到elasticsearch进行筛选

    主要特性包括水平分库、水平分表、读写分离和分布式事务等。 2. **分库分表**:这是数据库垂直拆分的一种策略,通过将一个大表分散到多个数据库或表中,以减轻单个数据库的压力。Sharding-JDBC允许根据自定义的分片...

    2018年系统架构设计师真题PDF.zip

    设计师需要掌握关系型数据库如MySQL、Oracle的使用,理解数据库设计的范式理论,以及SQL语言的高级应用,如索引优化、事务处理和备份恢复策略。 在云计算方面,系统架构设计师应熟悉AWS、Azure、阿里云等主流云平台...

Global site tag (gtag.js) - Google Analytics