![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式
孤竹彧
一个想进步,又控制不住自己的小码农
展开
-
分布式事务解决方案
Confirm 阶段:主要是对业务系统做确认提交,Try阶段执行成功并开始执行 Confirm阶段时,默认 Confirm阶段是不会出错的。都是正向还好,如果AB两个线程,A拿锁后,B也要拿锁,此时A异常要回滚,也会等待,直到B超时。Cancel 阶段:主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。2、如果commit过程中,通信失败,会导致部分commit,数据不统一。2、preCommit后,如果超时,默认认为commit。TCC和PC的不同之处是,不会锁表,数据库事务是分开的。原创 2023-03-29 16:29:19 · 174 阅读 · 0 评论 -
dubbo异常拦截方案及自定义
package org.apache.dubbo.rpc.filter;import java.lang.reflect.Method;import org.apache.dubbo.common.extension.Activate;import org.apache.dubbo.common.logger.Logger;import org.apache.dubbo.common.logger.LoggerFactory;import org.apache.dubbo.common.util原创 2022-04-28 15:55:15 · 681 阅读 · 0 评论 -
Paxos算法的自我理解(《从Paxos到zookeeper》第二章)
Proposer:提议者Acceptor:批准者,数量为奇数,方便选出多数派请求先到Proposer,再通过Proposer到Acceptor简述:使用多数派方式,只要多数达成一致就行,这样可以保证在部分节点断开依然可以运行acceptor通过不接受旧编号的方式,来确保每次通过prepare的都是最新编号数据proposer通过prepare获取最新的v,来保证不会将已有决议推翻原创 2021-10-26 09:40:18 · 103 阅读 · 0 评论 -
关于CAP原理的理解和困惑
CAP由以下三个指标组成:C(Consistency):一致性A(Availability):可用性P(Partition tolerance):分区容错一致性很好理解,就是各分区的数据要保持一致,不能我从A分区查询和从B分区查询到的数据不同可用性也好理解,就是部分分区崩溃的情况下,服务仍可以使用分区容错性的意思是,各个分区是分隔的时候,网络通信失败,整个服务还是可以用的现在困惑的一点是,分区容错性是可以保证分区通信失败的,这种情况下,怎么保证数据一致性的呢?哪位大神能够解答...原创 2021-02-25 10:42:25 · 274 阅读 · 2 评论 -
RPC学习
RPCRPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。(1) 客户端(client)以本地调用方式(即以接口的方式)调用服务;(2) 客户端存根(client stub)接收到调用后,负责将方法、参数等组装成能够进行网络传输的消息体(将消息体对象序列化为二进制);(3)...原创 2020-03-23 22:36:57 · 125 阅读 · 0 评论 -
利用CompletableFuture实现请求合并操作
请求合并的思想:不是每次请求都建立连接,而是把多个请求进行合并,一起访问数据库,节约空间。所以必然时间会延长,所以请求合并是:时间换空间。其实其中的想法,都可以想到,唯一想不到的就是CompletableFuture的使用。原本的Order类public class Order { private String code; private String name; ...原创 2020-02-25 23:45:44 · 1527 阅读 · 2 评论 -
ThreadLocal的实际运用
之前在利用zookeeper实现分布式锁时候,使用了ConcurrentHashMap保存currentPath等,现在有了ThreadLocal,我们可以直接使用ThreadLocal了把MyZookeeperLock的类进行修改,其他代码不变,依然可以用public class MyZookeeperLock implements Lock { private String lo...原创 2020-02-24 17:37:39 · 401 阅读 · 0 评论 -
利用zookeeper实现分布式锁
实现分布式锁的几种方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁今天要写的是使用Zookeeper的方式使用Zookeeper实现分布式锁的思想是:我在加锁的时候,插入一个节点,当把锁释放的时候,就把节点删除。为了提高效率,使用的是临时顺序节点,每次只监听比自己临近小的节点是否删除准备:安装zookeepr,pom加依赖 ...原创 2020-02-23 00:33:31 · 153 阅读 · 0 评论