[Java复习] 分布式事务 Part 1】的更多相关文章

分布式事务了解吗?如果解决分布式事务问题的? 面试官心里: 只要聊到你做了分布式系统,必问分布式事务,起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么. 为什么要有分布式事务? 分布式事务实现的几种方案: 1. 两阶段提交方案/XA方案 这种分布式事务方案,比较适合单块应用里.跨多个库的分布式事务,由于因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景. 如果要玩儿,那么基于 Spring + JTA 就可以搞定. 这个方案,很少用,一般来说某个系统内部如果出现…
1. CAP理论 C: Consistency 一致性 A: Availability 可用性 P: Partition tolerance 分区容错性 CAP定理:一个分布式系统不可能同时满足CAP三个要求,最多只能同时满足其中两项. 1.1. CA: 放弃分区容错性,所有数据放一个节点,退回单机模式. 1.2. CP: 放弃可用性,一旦网络故障,受影响服务需要等待恢复时间,系统处于不可用状态. 1.3. AP: 放弃一致性,这里指放弃强一致性,确保最终一致性.大多数分布式系统的选择. 2.…
一般实现分布式锁都有哪些方式? 使用 Redis 如何设计分布式锁?使用 Zookeeper 来设计分布式锁可以吗? 这两种分布式锁的实现方式哪种效率比较高? 1. Zookeeper 都有哪些使用场景? 四大场景: 分布式协调 分布式锁 元数据/配置信息管理 HA高可用性 分布式协调: 场景:A系统发请求到MQ,B系统消费之后,A系统怎么知道B系统的处理结果? 解决方案:用Zookeeper实现分布式系统之间协调工作. A系统发请求之后,在Zookeeper上对某个节点的值注册监听器,一旦B系…
分布式RPC框架 dubbo常见问题: 1. 问dubbo的工作原理:服务注册,注册中心,服务生产者,消费者,代理通信,负载均衡 2. 问网络通信,序列化: dubbo协议,长连接,NIO,hessian序列化协议 3. 问负载均衡策略,集群容错策略,动态策略:dubbo跑起来后一些功能是如何运转,怎么做复制均衡,怎么做容错,怎么生成动态代理? 4. 问dubbo SPI机制:是否了解SPI机制?如何基于SPI机制对dubbo进行扩展? 5. dubbo服务治理,超时,降级,重试等. 1. 为什…
什么是Hystrix? Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制. Hystrix 的设计原则 对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护. 在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延.比如某一个服务故障了,导致其它服务也跟着故障. 提供 fail-fast(快速失败)和快速恢复的支持. 提供 fallback 优雅降级的支持. 支持近实时的监控.报警以及运维操作. Hystrix 更加细节的设计原…
看这个博客吧! 挺好的. 理论:https://www.cnblogs.com/jajian/p/10014145.html 实践:https://www.cnblogs.com/sessionbest/p/9396663.html…
0 引言 本文主要介绍java中分布式事务以及对应的解决方案. 1 分布式事务产生的原因 1.1 数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此不做解释,以后有空详细说,简单的说就是原来的一个数据库变成了多个数据库.这时候,如果一个操作既访问01库,又访问02库,而且要保证数据的一致性,那么就要用到分布式事务. 1.2 SOA优化 所谓的SOA化,就是业务的服务化.比如原来单机支撑了整个电商网站,现在对整个网站进行拆解,分离出了订单中心.用…
  JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据. JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容. 一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果. 一个分布式事务处理只是一个在两个或更多网络资源上访问和更新数据的事务处理,因此它在那些资源之间必然是等价的. 在本文中,我们主要关心的…
在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子. 请通过以下方式下载github源代码: git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git 本地事务和分布式事务的区别在于:本地事务只用于处理单一数据源事务(比如单个数据库),分布式事务可以处理多种异构的数据源,比如某个业务操作中同时包含了JDBC和JMS或者某个操作需要访问多个不同的数据库. Java…
JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容.一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果. 一个分布式事务处理只是一个在两个或更多网络资源上访问和更新数据的事务处理,因此它在那些资源之间必然是等价的.在本文中,我们主要关心的是如何处理…