Jiefang's Blog

过去心不可得,现在心不可得, 未来心不可得

Redisson-04丨Redisson联锁与红锁源码分析

Redisson联锁与红锁源码分析 联锁 基于Redis的Redisson分布式联锁RedissonMultiLock对象可以将多个RLock对象关联为一个联锁,每个RLock对象实例可以来自于不同的Redisson实例。 用法 1 2 3 4 5 6 7 8 9 10 RLock lock1 = redissonInstance1.getLock("lock1"); RLock l...

Redisson-03丨Redisson公平锁源码分析

Redisson公平锁源码分析 获取公平锁 1 2 3 4 5 RLock RedissonClient#getFairLock(String name) @Override public RLock getFairLock(String name) { return new RedissonFairLock(connectionManager.getCommandExecuto...

Redisson-02丨Redisson可重入锁源码分析

Redisson可重入锁源码分析 1 2 3 4 5 6 @Override public RLock lock(String lockKey) { RLock lock = redissonClient.getLock(lockKey); lock.lock(); return lock; } 构造函数 1 2 3 4 5 6 7 8 9 10 11 1...

Redisson-01丨Redisson分布式锁介绍

Redisson分布式锁介绍 可重入锁(Reentrant Lock) 基于Redis的Redisson分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。 1 2 3 RLock lock = redisson.getLock("anyLoc...

Redis-17丨Redis.conf配置详解

Redis.conf配置详解 Redis版本为redis-5.0.8 网络 1 2 3 4 5 6 7 8 9 10 11 12 13 ################################## NETWORK ##################################### # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求。 b...

17丨redis.conf配置详解

Redis.conf配置详解 Redis版本为redis-5.0.8 网络 1 2 3 4 5 6 7 8 9 10 11 12 13 ################################## NETWORK ##################################### # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求。 b...

事务-07丨ByteTcc原理

ByteTcc原理 开启TCC事务 服务A->CompensableHandlerInterceptor->CompensableMethodInterceptor->TransactionInterceptorImpl->TransactionInterceptor->...->TransactionManagerImpl 1 2 3 4 5 ...

事务-06丨ByteTcc分布式事务框架

ByteTcc分布式事务框架 简介 ByteTCC是分布式事务管理器的一个实现,基于Try-Confirm-Cancel(TCC)机制。 ByteTCC与JTA兼容,可以与Spring和其他Java容器无缝集成。 ByteTCC的GitHub地址 原理 模块 TCC服务:由实现业务接口的三个实现类(业务实现类,确认实现类,取消实现类)一起构成一个TCC型服务...

事务-05丨分布式事务方案

分布式事务方案 本地消息表 流程 A 系统在自己本地一个事务里操作同时,插入一条数据到消息表; A 系统将这个消息发送到 MQ 中去; B 系统接收到消息之后,在一个事务里,往自己本地消息表里插入一条数据,同时执行其他的业务操作,如果这个消息已经被处理过了,那么此时这个事务会回滚,这样保证不会重复处理消息; B 系统执行成功之后,就会更新自己本地消息表的状态以及 ...

事务-04丨JTA + Atomikos分布式事务

JTA + Atomikos分布式事务 Atomikos使用 引入依赖 1 2 3 4 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId&g...

Spring-01丨logback.xml和logback-spring.xml的区别

logback.xml和logback-spring.xml的区别 logback.xml和logback-spring.xml都可以用来配置logback,但是二者的加载顺序是不一样的。 logback.xml--->application.properties--->logback-spring.xml. logback.xml加载早于application.pro...

事务-03丨2PC和3PC

2PC和3PC 2PC 2PC是二阶段提交协议(Two Phase Commitment Protocol),是强一致、中心化的原子提交协议。2PC将事务的提交过程分为:准备阶段和提交阶段。事务的发起者称协调者,事务的执行者称参与者。 阶段1:准备阶段 协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待所有参与者答复。 各参与者执行事务操作,但不提交事务。 如...

事务-02丨@Transactional源码

Transactional源码 TransactionInterceptor 位于spring-tx-5.2.9.RELEASE.jar中,继承类TransactionAspectSupport:其实对其进行了增强(模板方法模式),实现接口MethodInterceptor:方法拦截器,执行代理类的目标方法,会触发invoke()方法执行。 1 2 3 4 5 6 7 8 9 10...

事务-01丨事务基础

事务基础 ACID 分别是原子性、一致性、隔离性、持久性。 原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事...

SpringCloud-01丨SpringCloud时效性和超时重试机制

SpringCloud时效性和超时重试机制 注册中心 服务注册 SpringCloud封装EurekaClient,服务启动就去注册中心注册,时效性基本在毫秒级。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ...

Zuul-02丨Zuul执行流程

Zuul执行流程 自动装配 EnableZuulProxy 1 2 3 4 5 6 @EnableCircuitBreaker @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(ZuulProxyMarkerConfiguration.class) public @interface Enab...

Zuul-01丨Zuul简介

Zuul简介 Zuul简介 What is Zuul? Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming application. As an edge service application, Zuul is bui...

Hystrix-07丨Hystrix熔断器机制

Hystrix熔断器机制 熔断器初始化 1 this.circuitBreaker = initCircuitBreaker(this.properties.circuitBreakerEnabled().get(), circuitBreaker, this.commandGroup, this.commandKey, this.properties, this.metrics);...

Hystrix-06丨Hystrix降级机制

Hystrix降级机制 以下四种情况将触发getFallback()调用: run()方法抛出非HystrixBadRequestException异常; run()方法调用超时; 熔断器开启拦截调用; 线程池/队列/信号量是否已满; 熔断器开启 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

Hystrix-05丨Hystrix超时中断机制

Hystrix超时中断机制 HystrixObservableTimeoutOperator#call() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5...