前言分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。什么是分布式锁1.在分布式环境中使用到的锁就是分布式锁2.在分布式环境中对不同应用程序操作的共享资源进行加锁就是分布式锁分布式环境1.同一个
分类:
其他好文 时间:
2020-09-11 16:09:19
阅读次数:
43
一. 为什么要使用分布式锁 现如今项目集群化,大部分都是采用了多节点部署。在越来越复杂的业务中,java自身的锁机制已经满足不了现在的业务需求了。所以此时需要分布式锁来避免一些因为并发导致的业务错误。 二. 分布式锁介绍 现在业务中分布式锁主要有redis与zookeeper两种方式实现。 三. R ...
分类:
其他好文 时间:
2020-09-04 17:03:48
阅读次数:
40
1. 抢购活动开始的一瞬间,大量的用户校验请求打到了用户服务。导致用户服务网关出现了短暂的响应延迟,有些请求的响应时长超过了10s,但由于HTTP请求的响应超时我们设置的是30s,这就导致接口一直阻塞在用户校验那里,10s后,分布式锁已经失效了,此时有新的请求进来是可以拿到锁的,也就是说锁被覆盖了。 ...
分类:
其他好文 时间:
2020-09-03 16:40:54
阅读次数:
39
ZooKeeper是什么? ZooKeeper是一个开源的分布式应用程序协调系统。简称ZK,ZK是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据的发布/订阅、负载均衡、名称服务、分布式协调/通知、集群管理、Master选举、分布式锁盒分布式队列等等功能。它运行在JAVA环境之中 ...
分类:
其他好文 时间:
2020-08-25 15:47:04
阅读次数:
49
为何需要分布式锁? 在单进程的系统中,当遇到并发情况下,会出现一些数据异常的问题,但是如果这些数据是需要保证唯一性的话,那我们就希望在同一时刻,只能有一个线程在执行这块代码,通常我们一般都是通过简单的加锁或同步来实现并解决这个问题。 但是以上都是单进程多线程的情况,如果出现多进程多线程,显然会出现问 ...
分类:
Web程序 时间:
2020-08-25 15:43:01
阅读次数:
61
重做永远比改造简单最近在做一个项目,将一个其他公司的实现系统(下文称作旧系统),完整的整合到自己公司的系统(下文称作新系统)中,这其中需要将对方实现的功能完整在自己系统也实现一遍。旧系统还有一批存量商户,为了不影响存量商户的体验,新系统提供的对外接口,还必须得跟以前一致。最后系统完整切换之后,功能只运行在新系统中,这就要求旧系统的数据还需要完整的迁移到新系统中。当然这些在做这个项目之前就有预期,想
分类:
其他好文 时间:
2020-08-04 14:06:39
阅读次数:
118
许多场景中,数据一致性是一个比较重要的话题,在单机环境中,我们可以通过Java提供的并发API来解决;而在分布式环境(会遇到网络故障、消息重复、消息丢失等各种问题)下要复杂得多,常见的解决方案是分布式事务、分布式锁等。
本文主要探讨如何利用Zookeeper来实现分布式锁。
分类:
其他好文 时间:
2020-07-31 19:20:05
阅读次数:
86
1.redis是单线程,高性能的key/value内存数据,基于内存运行并支持持久化的NoSQL数据库 2.redis主要用来做缓存,但不仅仅是做缓存,例如:redis的计数器生成分布式唯一主键,redis实现分布式锁,队列,会话缓存 安装单节点redis 1、安装gcc套装: yum instal ...
分类:
其他好文 时间:
2020-07-29 21:49:59
阅读次数:
75
1.什么是分布式 分布式不是指必须把应用程序部署到不同的服务器 只要存在应用程序跨JVM就是分布式 2.什么时候使用分布式锁 应用之间存在共享资源的竞争就要使用分布式锁 3.什么时候使用分布式事务 需要保证数据库中的数据的一致性的时候,就需要使用分布式事务 4.都有哪些分布式锁 4.1. 数据库-乐 ...
分类:
其他好文 时间:
2020-07-29 15:31:57
阅读次数:
77
前言 基于Redis使用分布式锁在当今已经不是什么新鲜事了。本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。 背景:我们项目中的抢购订单采用的是分布式锁来解决的。 有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了!要知道,这个地球上飞天茅台的稀缺性啊 ...
分类:
其他好文 时间:
2020-07-29 14:59:15
阅读次数:
59