- 博客(4)
- 收藏
- 关注
原创 微服务-分布式锁(三)-Zookeeper方案
Apache-Curator如上借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力。这种实现方式所有加锁请求都进行排队加锁,是公平锁的具体实现。Apache-Curator中提供的常见锁有如下:InterProcessMutex:就是公平锁的实现。可重入、独占锁InterProcessSemaphoreMutex:不可重入、独占锁InterProcessReadWriteLock:读写锁InterProcessSemaphoreV2:共享信号量InterProcessMu
2021-07-25 10:14:52
78
原创 微服务-分布式锁(二)-Redis方案
1 LUA+SETNX+EXPIRE先用setnx来抢锁,如果抢到之后,再用expire给锁设置一个过期时间,防止锁忘记了释放。setnx(key, value)setnx 的含义就是 SET if Not Exists,该方法是原子的。如果 key 不存在,则设置当前 key 为 value 成功,返回 1;如果当前 key 已经存在,则设置当前 key 失败,返回 0。expire(key, seconds)expire 设置过期时间,要注意的是 setnx 命令不能设置 key 的超
2021-07-25 10:11:50
202
原创 微服务-分布式锁(一)-MySQL方案
1 基于唯一索引(insert)实现记录锁的乐观锁方案。基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含方法名等字段,并在方法名字段上创建唯一索引,想要执行某个方法,就使用这个方法名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁。1.1 优缺点优点实现简单、易于理解缺点没有线程唤醒,获取失败就被丢掉了没有超时保护,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁这把锁强依赖数据库的可用性,数据库是一个单点,一旦数据库挂掉,会导致
2021-07-25 10:05:39
183
原创 微服务 —— 断路器设计
熔断机制是应对雪崩效应的一种微服务链路保护机制。当链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。服务断路器的设计架构图如下:1 断路器状态服务调用方为每一个调用服务 (调用路径) 维护一个状态机,在这个状态机中有3种状态:CLOSED:默认状态。断路器观察到请求失败比例没有达到阈值,断路器认为被代理服务状态良好OPEN:断路器观察到请求失败比例已经达到阈值,断路器认为被代理服务
2021-07-24 08:19:24
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人